1, 如何仅仅使用auth key验证(一旦key验证失败,则断开此ssh连接,不再进行keyboard interactive 验证,这在使用脚本或者for 循环处理批量主机时非常实用)
反之可以设置BatchMode=no
To Execute SSH and SCP in Batch Mode (Only when Passwordless login is enabled)
for ssh: -o BatchMode=yes
for scp: -B
2, 防止ssh client检查~/.ssh/known_hosts ,
这样就不会因为对方主机被重新安装过(指纹变化)而退出ssh连接:
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
3, 设置Timeout (openssh支持,sun Solaris ssh没有这个选项)
ssh -o ConnectTimeout=10 Where 10 is time in seconds.
4, ssh 打洞
ssh -L 1234:skywalker:80 root@skywalker
访问本地1234端口则为访问skywalker 80号端口ssh -R *:1234:localhost:81 root@skywalker
访问远程主机skywalker 1234端口则为访问本机的81号端口 (skywalker上sshd_config 的GaterwayPorts 需为yes)
5, 生成Private/Public key (命令如下,请自行选择参数)
$ ssh-keygen
id_rsa就是你的私钥,而id_ras.pub则是你的公钥)(或者id_dsa/id_dsa.pub ),现在你需要将公钥拷贝到服务器,如果你的系统有ssh-copy-id命令,拷贝会很简单:
$ ssh-copy-id ryan@targethost
否则,你需要手动将你的公钥拷贝到target host的~/.ssh/authorized_keys (或者~/.ssh/authorized_keys2 )文件中:
cat ~/.ssh/id_rsa.pub | ssh user@targethost “umask 077; test -d ~/.ssh || mkdir -p ~/.ssh ; cat >> ~/.ssh/authorized_keys”
如果ssh key不生效,记得检查.ssh 和 ~/.ssh/authorized_keys的属性,确保没有g和o的rwx权限
6, 重定向X display
如果你需要将远程主机application 的X display到你的笔记本(前提是你的笔记本具有X display的能力, Linux/Unix/Macos天生具有,windows请找相应的软件,XManager?)
此时你需要使用-X 参数
ssh -X -l root targethost “xlogo”
这个选项需要服务器开启X forwarding,编辑/etc/ssh/sshd_config,添加或修改此行:
X11Forwarding yes
7, 重新定义EscapeChar
默认情况下,对于已有的ssh connection,如果键入 ~. (tilde 然后 dot) ,ssh连接将会自动断开。但这对于远程使用跳板机(管理机)的情况就不太实用,当通过笔记本ssh到管理机上,并ssh到其他主机或者 Solaris Zone console管理的时候,(这样的场景中,当你需要断开管理机与其他主机的ssh连接,或者退出Solaris zone console) 键入 ~. 将会直接断开你与管理机的 ssh 连接。 所以我们需要重新定义笔记本端ssh client的EscapeChar
我的定义如下,编辑~/.ssh/config,加入
EscapeChar `
这样EscapeChar就从~ (tilde) 定义成了 ` (backquote) ,在管理机端,你可以放心使用~. 来断开跳板连接,而使用 `. 时才会断开你与跳板机的连接。(Windows用户请自行查找ssh client配置文件位置,应该也可配置)





