Client端:
如果不想泄露服务器的密码,就使用公钥-秘钥对(任何一对公钥-秘钥都可,一般是将Server的秘钥拷贝到Client端。)。Shell、PHP、Python等解释型语言可以使用公钥-秘钥,C、Java等编译型语言就无所谓了。
1.sshpass非交互密码认证:
sshpass -p 123456ssh -Nqf -o TCPKeepAlive=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o StrictHostKeyChecking=no -R 10000:localhost:22 -p7122 setup@zhangyi.rimag.com.cn
2.公钥-秘钥认证
ssh -Nqf -i id_rsa -o TCPKeepAlive=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o StrictHostKeyChecking=no -R 10000:localhost:22 -p7122 setup@zhangyi.rimag.com.cn
注意 id_rsa文件的权限
chmod 600id_rsa
3.公钥-秘钥生成
Server端:
查看端口号,ssh 隧道是否连通:
连接Client端:
ssh -o StrictHostKeyChecking=no -p10000 zhangyi@127.0.0.1
断掉进程:
Server:
sudo netstat -lanp | grep 10000
Client:
ps -e | grep "ssh"
kill -9 ID
TCPKeepAlive
指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。可以设为"no"关闭这个特性。
ServerAliveInterval
在linux系统中使用ssh连接远程服务器时,为了防止时间超时,每60秒Server会发一个KeepAlive请求给Client响应,避免断开连接。
ClientAliveCountMax 10
Server发出请求后,客户端没有响应得次数达到10,就自动断开连接,正常情况下,Client不会不响应
StrictHostKeyChecking
实现当第一次连接服务器时,自动接受新的公钥。不需要手动敲yes,自动化任务用到。
ssh 其他参数参考:http://blog.sina.com.cn/s/blog_6ca2bddf0100rljn.html