运维的情景中 经常需要用跳板机ssh 阿里云vpc的情况。又不想重复输密码或者做免密。
就想通过把命令登录的方式存在主机上或做别名,以便直接ssh上目标机子。实现偷懒,不输入密码。
不想看下面方法的小伙伴我就直接贴命令了
实现从192.168.10.112通过跳板机192.168.10.96 从而ssh到192.168.10.170
sshpass -p XJM@151089 ssh root@192.168.10.170 -p 22 -o ProxyCommand='sshpass -p XJM@151089 ssh -p 22 root@192.168.10.96 -W %h:%p'
ssh -p22 -i /Users/xujiamin/Downloads/秘钥/ac.pem -o ServerAliveInterval=60 root@192.168.0.242
ssh -p22 -i /Users/xujiamin/Downloads/秘钥/ac.pem root@192.168.0.242 -p 22 -o ProxyCommand='sshpass -p Password ssh -p 22 root@47.99.86.27 -W %h:%p'
sshpass -p Password ssh root@192.168.0.242 -p 22 -o ProxyCommand='sshpass -p Password ssh -p 22 root@47.99.86.27 -W %h:%p'
Linux(Mac)下有如下两种方式:
方式一:
从linux客户端的ssh跳转时,执行命令
ssh username@跳板机ip
然后在跳板机上跳转到目标机器
ssh username@目标机器ip
跳板机ip和目标机器ip,username账户下已经在相应的 .ssh/authorized_keys 加入了公钥,配置是没有问题了,但是我们会遇到一个Pubkey Unauthorization的错误,因跳板机没有username的私钥。问题总是会有,解决方法也总是有,ssh是有转发密钥的功能,从本机跳转到跳板机时可以把私钥转发过去。
正确做法是,在本机linux客户端执行命令 ssh -A username@跳板机ip
-A表示转发密钥,所以跳转到跳板机,密钥也转发了过来
接下来我们再在跳板机执行命令 ssh username@目标机器ip
另外可以配置本机客户端的默认配置文件,修改为默认转发密钥:
修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):
把 #ForwardAgent no 改为 ForwardAgent Yes
方式二:
ssh username@目标机器ip -p 22 -o ProxyCommand='ssh -p 22 username@跳板机ip -W %h:%p'
也可以修改配置文件 ~/.ssh/config , 若没有则创建:
Host tiaoban #任意名字,随便使用
HostName 192.168.1.1 #这个是跳板机的IP,支持域名
Port 22 #跳板机端口
User username_tiaoban #跳板机用户
Host nginx #同样,任意名字,随便起
HostName 192.168.1.2 #真正登陆的服务器,不支持域名必须IP地址
Port 22 #服务器的端口
User username #服务器的用户
ProxyCommand ssh username_tiaoban@tiaoban -W %h:%p
Host 10.10.0.* #可以用*通配符
Port 22 #服务器的端口
User username #服务器的用户
ProxyCommand ssh username_tiaoban@tiaoban -W %h:%p
配置好后, 直接 ssh nginx 就可以登录 192.168.1.2 这台跳板机后面的服务器。 也可以用 ssh username@10.10.0.xx 来登录10.10.0.27, 10.10.10.33, .... 等机器。
我这里直接偷懒了 不想输入密码就用sshpass 代替了 实现从192.168.10.112通过跳板机192.168.10.96 从而ssh到192.168.10.170
sshpass -p XJM@151089 ssh root@192.168.10.170 -p 22 -o ProxyCommand='sshpass -p XJM@151089 ssh -p 22 root@192.168.10.96 -W %h:%p'
windows SecureCRT密钥转发
windows下SecureCRT配置转发,需要做以下设置