SSH跳板机访问内网机器及其免密登录
由于项目部署的P4交换机与工位主机在同一内网内,且工位主机和本人笔记本通过tailscale虚拟组网功能可以相互访问,因此为了便于外网的笔记本可以随时SSH连接到内网的交换机设备,需要设置工位主机作为跳板机,完成本机 -> 跳板机 -> 内网交换机的SSH访问。
ProxyJump
需要OpenSSH版本高于7.3才能使用ProxyJump,其使用方法如下:
1 | |
其中target_username和jump1_username分别为目标主机和跳板机的ip地址,target_ip和jump_ip分别为目标主机和跳板机的ip地址或域名,target_port和jump_port分别为目标主机和跳板机的ssh服务器端口号,端口号22时可以默认省略。
当存在多个跳板时,可以通过在 -J选项后以,分割多个username@ip:port来实现,即
1 | |
存在多个跳板机时,访问顺序为local -> jump1 -> jump2 -> … -> server。
为了能够简化命令,可以通过在~/.ssh/config中加入以下配置:
1 | |
保存配置文件后,使用ssh target即可完成连接。
ProxyCommand
OpenSSH版本低于7.3时,可以选择使用ProxyCommand,其使用方法如下:
1 | |
其中target_username和jump_username分别为目标主机和跳板机的ip地址,target_ip和jump_ip分别为目标主机和跳板机的ip地址或域名,target_port和jump_port分别为目标主机和跳板机的ssh服务器端口号,端口号22时可以默认省略。
为了能够简化命令,可以通过在~/.ssh/config中加入以下配置:
1 | |
保存配置文件后,使用ssh target即可完成连接。
免密登录
将本机~/.ssh/文件夹下的密钥对中的公钥(以.pub)结尾分别上传添加到跳板机和目标主机的~/.ssh/authorized_keys文件中,并且在本机配置文件~/.ssh/config中,分别在jump和target的配置中加入密钥对中的私钥路径,若文件名为默认的id_rsa可以不作修改。
1 | |
如何生成密钥对可参考上一篇文章Windows&Linux SSH免密公钥登录。