本文主要展示ssh如何免密登陆+隧道功能。
免密登陆
生成公钥和私钥:
# 生成密钥
# -t 加/解密算法
# -C 注释,一般是填写用户名
ssh-keygen -t ed25519 -C "33@33.com"
按三次回车,成功生成公钥和私钥。查看
#ssh 公钥
cat ~/.ssh/id_ed25519.pub
#ssh 私钥
cat ~/.ssh/id_ed25519
将生成的.pub上传到远程端
ssh-copy-id -i ~/.ssh/id_rsa.pub mm@172.24.xx.xxx
需要输入密码,上传后就可以免密登陆了。
建立桥接
如果我们需要连到某个工控机上,再连到某个域内,就需要ssh两次,如果要上传东西的话就需要scp两次非常麻烦,这里可以通过建立隧道来一步到位。这里工控机为:mm@172.24.xx.xxx,远程域端nvidia@192.168.5.5
首先我们需要连到工控机上:
ssh mm@172.24.xx.xxx
#工控机ip:port:域内ip:port 工控机ip
ssh -Nf -L 172.24.xx.xxx:6001:192.168.5.5:22 172.24.xx.xxx
执行完后我们就可以直接在本地连远程域端了:
#本地连接远程域端
ssh -p 6001 nvidia@172.24.xx.xxx
#本地传输文件到远程域端
scp -P 6001 1.txt nvidia@172.24.xx.xxx:/ota/evan
注意这两个p的大小写,并且ip是域内用户名:工控机的ip
这时我们连接远程域端还是要输入密码,因为之前我们只是把我们的公钥给了工控机,我们还需要把公钥上传到远程域端,执行下面语句即可。
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 6001 nvidia@172.24.xx.xxx
然后我们只需要执行下面语句即可免密直接连接到远程域内:
ssh -p 6001 nvidia@172.24.xx.xxx
这样可以大大减少我们重复性工作!如有错误欢迎指正!