问题描述:
数据在服务器A上,人家给我们提供了两个跳板机B和C的IP,我需要从没有固定IP的主机上先连接一个跳板机B或者C,才能再连接到服务器A。另外,密码非常长,而且需要输入两遍。
通过密钥连接实现免密登陆服务器
主机local的终端中输入下面的命令
ssh-keygen
生成秘钥。
再把公共密钥复制到跳板机B的.ssh/authorized_keys文件中。
登陆跳板机B的终端,如果没有authorized_keys文件,按一下方法新建,复制上一步的秘钥在此文件中
mkdir .ssh/authorized_keys
然后设置文件的权限
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys
现在应该可以ssh name@IP免密从主机local登录跳板机B了。
然后,我想用相同方法免密从跳板机B登陆服务器A,但是我手贱啊,登陆服务器A又需要输入冗长的免密,回车了n次表示抗议。再次准备输入密码的时候,被拒绝连接了,多次尝试错误密码,服务器A可能把跳板机B的IP封了。 于是我恍然大悟,难怪人家提供两个跳板机!
一看时间4点了,本来只是想下载数据的,3个小时过去了,看起来一点进展也没有。自我安慰也不是没有收获,增强了通过秘钥认证的记忆,理解了为啥人家非要通过一个跳板机连接服务器(为了安全重要服务器不使用公网),了解自己为啥被禁止连接(服务器使用防火墙限制了恶意IP地址)。 这一晚上我从反面学了如何安全地使用ssh服务远程连接服务器。
通过一次scp命令直接从服务器A复制数据到主机local
用相同设置秘钥的方法,现在从主机local密钥连接到跳板机C,将跳板机C中~/.ssh/authorized_keys文件复制到服务器A的~/.ssh/authorized_keys位置。 在我的主机local中修改配置文件 ~/.ssh/config,没有就创建config,输入如下内容:
Host tiaoban
HOSTNAME tiaobanjiC_IP
Port 22
User changes
Host nginx
HostName fuwuqiA_IP
Port 22
User changes
ProxyCommand ssh changes@tiaoban -W %h:%p
配置好后,在主机local的终端中,直接输入
ssh nginx
就可以登录这台跳板机C后面的服务器A了。现在可以简单地将数据从服务器A下载到没有固定IP的主机了!
scp -r nginx:/storage/changes/data/21A-033_2021_09_06_T22_25_03.831 .
解决问题还是挺有趣,感谢搜索引擎。