Questions tagged «ssh»

安全外壳(SSH)是主要用于加密外壳连接的协议。此标记还用于有关sshd和openssh(使用SSH的两个标准应用程序)的问题。

1
从另一个非root用户访问SSH_AUTH_SOCK
场景: 我在本地PC上运行ssh-agent,并且所有服务器/客户端均设置为转发SSH代理身份验证。我可以使用本地PC上的ssh-agent在所有机器之间切换。那个有效。 我需要能够以自己的身份(user1)SSH到计算机,更改为另一个名为user2的用户(sudo -i -u user2),然后使用我在本地PC上运行的ssh-agent ssh到另一个机器。可以说我想做类似ssh user3 @ machine2的操作(假设user3在他们的authorized_keys文件中有我的公共SSH密钥)。 我已将sudo配置为保留SSH_AUTH_SOCK环境变量。 所有涉及的用户(user [1-3])都是非特权用户(不是root)。 问题: 当我更改为另一个用户时,即使正确设置了SSH_AUTH_SOCK变量,(将其设置为:/tmp/ssh-HbKVFL7799/agent.13799),user2也无法访问user1创建的套接字-哪个当然这是有道理的,否则user2可以劫持user1的私钥并以该用户身份跳来跳去。 如果我不是通过user2的sudo获取外壳,而是通过root的sudo获取shell,则此方案很好用。因为root自然可以访问计算机上的所有文件。 问题: 最好使用sudo,如何从user1更改为user2,但仍然可以访问user1的SSH_AUTH_SOCK?
11 ssh  sudo  ssh-agent 

4
SSH公钥格式
我有一个公钥,格式为: ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "somename-20060227" AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]== ---- END SSH2 PUBLIC KEY ---- 通常我会看到以下格式的键: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAqof[and so on] 我可以只复制第一个密钥到authorized_keys文件中,还是必须以某种方式修改它,使其看起来像第二个?我认为第一个是由PUTTYgen生成的,而第二个是由ssh-keygen生成的。

8
通过SSH重新启动网络
在服务器A上,我想通过ssh向服务器B发出以下命令。 service network stop sleep 5 service network start 问题是因为我发出了网络“停止”命令,所以我当前的ssh连接也丢失了。因此,我无法执行后续命令(睡眠5和服务网络启动)。请注意,我无法使用(服务网络重新启动)。 有人对此有解决方法/解决方案吗?
11 linux  networking  ssh 

4
如何在服务器上为root用户设置公共SSH密钥?
我正在尝试按照Slicehost文档来设置服务器。我到达了SSH部分。我按书面要求进行操作,但是当我从root用户注销时,无法再次访问root @ IP_ADDRESS -p 30000!但我可以访问user @ IP_ADDRESS -p 30000。 因此,问题是,如何为root用户设置公共SSH密钥?
11 ssh  ssh-keys 

3
堡垒服务器:使用TCP转发VS在服务器上放置私钥
我们有堡垒服务器B。我们需要使用私钥从A到B到C进行SSH。 有什么更好的选择: 将私密SSH密钥放在服务器 B 上。我们了解到,在生产环境中执行此操作不是一个好主意。 从这里: 切勿将SSH私钥放在堡垒实例上。而是使用SSH代理转发来首先连接到该堡垒,然后再从那里连接到私有子网中的其他实例。这样,您就可以仅在计算机上保留SSH私钥。 使用SSH代理转发。为了设置代理转发,我需要允许TCP转发。设置代理转发时,将在转发主机上创建一个套接字文件,这是将密钥转发到目标的机制。在AWS的堡垒设置中: TCP转发:将此值设置为true将启用TCP转发(SSH隧道)。这可能非常有用,但同时也存在安全风险,因此我们建议您保留默认(禁用)设置,除非需要 也从这里: SSH代理转发被认为是有害的 什么是更好的?第二个链接的替代方法是什么:ProxyCommand,我知道它可以解决套接字文件问题,但是我仍然认为我必须启用TCP转发,这样是否足够安全?

2
Windows 10 ssh禁用密码身份验证?
Windows 10最近添加了OpenSSH作为Windows的可选功能。我找到了配置文件C:\ Windows \ System32 \ OpenSSH \ sshd_config,并授予自己修改它的权限。 这是我的文件: # $OpenBSD: sshd_config,v 1.84 2011/05/23 03:30:07 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default …
10 ssh  windows-10 

4
从本地计算机执行Shell脚本以在远程计算机中执行命令,然后在本地计算机上继续
问题是这样的:我想从远程计算机复制文件。 我正在寻找一种编写可以连接到远程计算机,获取存储文件位置的shell脚本的方法,一旦我断开与远程服务器的连接,并使用具有所获取位置的本地计算机中的scp复制文件。 具体来说,我想知道如何通过脚本连接到远程计算机,并在该计算机上执行任务。断开连接,然后继续在本地执行。
10 ssh  sh 

2
通过主机名将SSH连接转发到Docker容器
我遇到了一个非常具体的情况,尽管还有其他方法可以做到这一点,但我还是对此非常着迷,并想找到一种完全像这样的方法: 背景 假设我有一台服务器运行多个服务,这些服务藏在隔离的Docker容器中。由于大多数服务都是http,因此我正在使用nginx代理向每个服务公开特定的子域。例如,节点服务器在其端口80绑定到127.0.0.1:8000主机的docker容器上运行。我会在nginx的是代理的所有请求创建一个虚拟主机myapp.mydomain.com来http://127.0.0.1:8000。这样,只能通过外部从外部访问docker容器myapp.mydomain.com。 现在,我要以一种指向gogs容器的方式启动gogsgogs.mydomain.com docker容器。因此,我使用绑定到主机上的端口来启动此gogs容器。并且Nginx网站将请求代理到,并且效果很好...8000127.0.0.1:8001gogs.mydomain.comhttp://127.0.0.1:8001 但是,gogs是一个git容器,我也想像这样访问存储库,git@gogs.mydomain.com:org/repo但不适用于当前设置。进行此工作的一种方法22是将容器的端口绑定到0.0.0.0:8022主机上的端口,然后git ssh url可能类似于git@gogs.mydomain.com:8022/repo。 (这似乎不工作;当我推到与URI这样的原点,混帐要求密码对git上gogs.mydomain.com-而不是gogs.mydomain.com:8022-但不过这可能是什么我做错了,超出范围的这个问题,我也很感谢任何诊断) 问题 我主要关心的是,我希望<gogs container>:22代理ssh端口,就像使用nginx代理http端口一样;即任何gogs.mydomain.com要传递到容器port的ssh连接22。现在,我无法将容器的ssh端口绑定到主机的ssh端口,因为主机上已经有一个sshd在运行。同样,这意味着任何要*.mydomain.com传递到容器sshd的连接。 我想要任何ssh连接到: mydomain.com host.mydomain.com 或mydomain的IP地址被接受并转发到主机上的sshd gogs.mydomain.com或被git.mydomain.com接受传递到gogs容器上的sshd *.mydomain.com(*除上述可能性之外,还有其他什么)被拒绝 如果是http,我可以通过nginx轻松实现。有没有办法做到这一点的SSH? (也想出去问:一般来说,有没有一种方法可以通过任何 tcp服务来完成?) 也欢迎您对我在这里尝试的方式有任何见解。当我要做的事情完全愚蠢时,我不介意被告知。 我已经想到的是: 也许我可以与容器作为ro卷共享主机上的sshd套接字?这意味着容器内的sshd可以拾取与的所有连接*.mydomain.com。有没有办法使容器内的sshd 拒绝除gogs.mydomain.comor 以外的所有连接git.mydomain.com?但是,主机上的sshd *.mydomain.com无论如何都将占用所有的连接,包括gogs.mydomain.com; 所以会有冲突。我不知道,我实际上没有尝试过。我应该尝试吗?

2
SSH:客户端托管RSA私钥是否安全?
在服务器上生成公用/专用密钥对,将公用密钥添加到authorized_keys列表中,然后将专用密钥复制到每个客户端是否安全,如此处所述(http://www.rebol.com/docs/ ssh-auto-login.html),假设您对每个客户端都拥有永久控制权?(即同一用户,许多计算机)。 典型的过程是在客户端上生成公用/专用密钥对,然后按照此处所述(http://www.linuxproblem.org/art_9.html)将客户端的公用密钥添加到服务器上的authorized_keys列表中。使用此方法,如果您有多台客户端计算机,则每台客户端计算机都必须连接到authorized_keys列表中,并随时间进行维护。
10 ssh  ssh-keys 

1
链接断开时autossh不会杀死ssh
我的autossh witt开始了30秒的轮询时间: AUTOSSH_POLL=30 AUTOSSH_LOGLEVEL=7 autossh -M 0 -f -S none -f -N -L localhost:34567:localhost:6543 user1@server1 它工作正常: Sep 5 12:26:44 serverA autossh[20935]: check on child 23084 Sep 5 12:26:44 serverA autossh[20935]: set alarm for 30 secs 但是,如果我物理上拔下了网络电缆,这意味着隧道无法再使用,则autossh不会终止ssh守护程序。为什么?我知道如果链接断开,autossh不能执行任何操作,但是我认为它应该尝试执行以下操作: 验证子ssh进程(check on child ...) 验证远端!!!(通过隧道执行的类似ping的操作) 意识到隧道已关闭 停止ssh进程 尝试再次创建隧道 意识到它不起作用,并设置了(呈指数增长?)计时器以很快再次检查 这就是为什么我运行autossh的原因:如果隧道发生了任何事情(无论是软件还是硬件问题),它都应尝试重新启动它。相反,它只是在等待ssh进程终止。即使没有希望重新建立连接,它也不应该尝试重新启动它吗? autossh正在执行哪种检查?只需验证ssh是否已启动并正在运行?它不执行任何远端检查吗? 编辑 根据要求,我添加了ssh配置的相关部分: # …
10 networking  ssh 

2
为什么一段时间后我的ssh会话会冻结?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使其成为服务器故障的主题。 3个月前关闭。 抱歉,如果这不是问这个问题的正确地方。 我经常需要SSH到其他服务器。现在,从我的家用计算机(Linux造币厂)上,当我通过ssh连接时,经过一段时间不活动后,我的ssh shell冻结了,无法将其恢复。我唯一能做的就是'〜。',这至少使我的启动外壳恢复了原状。 当我从其他位置登录到相同的服务器时,没有问题。我的ISP可能有问题吗?如何对此进行进一步调查? 确实很烦人,因为冻结后我必须重新建立ssh连接,导航回原处并恢复工作。谢谢
10 ssh 

4
如何为(相对)大文件使用rsync修复损坏的数据包错误?
尝试使用以下rsync命令更新服务器上的文件: rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir corrupt packet 错误不断抛出,特别是: rsync: writefd_unbuffered failed to write 4092 bytes to socket [sender]: Broken pipe (32) rsync: connection unexpectedly closed (11337 bytes received so far) [sender] rsync error: unexplained error (code 255) at /home/lapo/package/rsync-3.0.9-1/src/rsync-3.0.9/io.c(605) [sender=3.0.9] 这可能与ssh超时有关,因为它似乎在large(r)文件中发生。另外,我一直在使用WinSCP超时。这只发生在我身上;与我一起使用该服务器的几个人没有相同的问题。 使用rsync从Windows …

8
Gitlab无法使用SSH密钥
我在Gitlab上遇到问题。我使用以下指南来安装和配置Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md。安装似乎一切顺利。Web应用程序似乎运行良好。但是我无法克隆,拉动,推入,基本上我基本上不能使用Gitlab。尝试通过SSH克隆时,我已经看到403错误,HTTP错误和权限被拒绝。 我确保我的私钥在Windows和OS X上都正确设置。我可以在服务器上看到公钥。我将以下内容添加到〜/ .ssh.config中的配置文件中 Host {hostname} User git Hostname {hostname} PreferredAuthentications publickey IdentityFile C:/Users/{username}/.ssh/id_rsa 这是我在/ var / log / secure中看到的 Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113 Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113 /var/log/message当我尝试使用git或ssh时,没有角色 我不确定从这里去哪里。有什么建议? 我不知道您使用git用户名的SSH是什么意思。我使用的指南没有为git用户创建密码,并指出不能使用该用户登录。
10 ssh  git  gitlab 

4
/var/log/auth.log不记录失败的ssh尝试
我正在尝试在服务器上失败(错误的用户名和/或密码)。 我从更改了/ etc / ssh / sshd_config # Logging SyslogFacility AUTH LogLevel INFO 至 # Logging SyslogFacility AUTH LogLevel VERBOSE 并且此后尝试对具有随机密码的现有和不存在的用户进行多次ssh尝试,因此失败了。检查/var/log/auth.log时,没有任何显示,并且完全空白。 我想念什么?是否还需要在系统上安装并运行其他一些进程?我正在运行Ubuntu。 在此问题上的任何帮助或指导都将受到欢迎。 谢谢

2
如何在.ssh / config中指定多个主机名/端口组合
我有多个笔记本电脑和工作站,它们从中央服务器上的多个Mercurial存储库中拉入和推送。我通常.ssh/config用来设置别名: Host repo-server HostName server.somedomain User user143 IdentityOnly yes IdentityFile ~/hgkey Port 156 ...还有更多选择,您就会明白。然后hg push ssh://repo-server//hgroot/someproject,我可以在每个本地存储库上简单地执行一个操作,然后可以在一个地方更改服务器地址和端口。 对于工作站,这可以正常工作,但是笔记本计算机可以使用不同的地址和端口从网络内部或外部访问服务器。有什么方法可以指定多个HostName / Port组合,以便SSH自动按顺序尝试它们?这样,用户可以推拉,而不必关心正确的地址。 (当然,使用VPN是最正确的解决方案)
10 ssh 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.