问题描述:

数据在服务器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 .

解决问题还是挺有趣,感谢搜索引擎。

[]