之前一直用SecureCRT登陆服务器A然后再跳到服务器B,某日突然需要从另一台可信任的机器C用ssh登陆,ssh的key已经复制好,所以登陆A没有问题,但是登陆B会出现Pubkey Unauthorization.
仔细翻查SecureCRT的设置,发现有密钥代理转发的设置:
如此类推,ssh也必须有相应的设置。方法如下:
1. 修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):把#ForwardAgent no改为ForwardAgent Yes,打开代理转发选项;
2. 开启keychain,使用ssh_add把密钥交给keychain管理:
一般keychain需要自行安装;
如果key不是默认的~/.ssh/id_dsa,可以使用ssh_add指出路径;
如果ssh_add遇到Could not open a connection to your authentication agent.错误,并且env没有出现SSH_AUTH_SOCK=/tmp/sshxxxx字样这一行,只需执行ssh-agent bash,把连接打开,再ssh_add;
按照提示输入密码后,就可以在机器C通过服务器A登录服务器B了。另一台机器在cygwin下也试过ok。