盒子
盒子

配置通过跳板机登录目标服务器

很多公司处于安全考虑,在登录服务器时会使用一个跳板机,这个跳板机实际上就是一个代理或者叫做Gateway。想登陆机器首先得登陆到这个跳板机,然后在上面登陆其他机器。

我们公司同样这么做,这样登录方式繁琐。可不可以直接直接就能跳过它直接登陆?方法肯定是有的,OpenSSH作为一套SSH协议的实现有着强大的工功能。

假设有3台机器,A是我们的客户端,B则是我们的跳板机,C是需要登陆的目标机器。现在A机器生成SSH密钥:

1
ssh-keygen -t RSA -C 'comment'

一切选项都默认,不设置对密钥的加密密码。这样会在$HOME/.ssh/目录下生成2个文件分别是id_rsaid_rsa.pub

接下来复制公钥id_rsa.pub到跳板机B:

1
cat $HOME/.ssh/id_rsa.pub | ssh B@B_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

这样已经可以不用密码直接登陆到B机器,为了方便登陆在$HOME/.ssh/config文件中做一个简单的配置:

1
2
3
4
5
Host B
Hostname 1.2.3.4
User root
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes

其中IdentityFile就指定了A机器客户端的私钥位置,这样直接通过ssh B就可以登陆到B机器。现在还需要A机器的公钥复制到C机器。因为刚刚已经把公钥复制到B机器,现在直接登陆到B机器,把B机器的`”

1
2
这样已经可以不用密码直接登陆到B机器,为了方便登陆在`$HOME/.ssh/config`文件中做一个简单的配置:

Host B
Hostname 1.2.3.4
User root
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes

1
2
其中`IdentityFile`就指定了A机器客户端的私钥位置,这样直接通过`ssh B`就可以登陆到B机器。现在还需要A机器的公钥复制到C机器。因为刚刚已经把公钥复制到B机器,现在直接登陆到B机器,把B机器的`"

这样已经可以不用密码直接登陆到B机器,为了方便登陆在$HOME/.ssh/config文件中做一个简单的配置:

1
2
3
4
5
Host B
Hostname 1.2.3.4
User root
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes

其中IdentityFile就指定了A机器客户端的私钥位置,这样直接通过ssh B就可以登陆到B机器。现在还需要A机器的公钥复制到C机器。因为刚刚已经把公钥复制到B机器,现在直接登陆到B机器,把B机器的~/.ssh/authorized_keys内容复制到C机器同样的文件里:

1
cat ~/.ssh/authorized_keys | ssh root@172.18.115.116 'cat >> ~/.ssh/authorized_keys'

接着退出到A机器,编辑A机器的~/.ssh/config`文件,添加下面内容:

1
2
3
4
5
Host C
Hostname 4.5.6.7
User root
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -q -W %h:%p B

如同刚刚配置的B机器,限制多了ProxyCommand配置,最后B便指定了配置的HOST A。现在就可以直接通过ssh C登陆到C机器。

关于ProxyCommand还有更多的用法,以及SSH还有更多高级用法后面再探讨。

支持一下
扫一扫,支持forsigner