新版的 FreeBSD 系统中集成的 OpenSSH 更改了认证规则——以往在 SecureCRT 里直接保存密码的方式已不再适用,现在必须通过密钥对来完成验证。如果每次连接都手动输入密码,想想都觉得麻烦。那么,如何让 SecureCRT 生成 OpenSSH 认可的密钥呢?其实操作非常简单,下面我们就一步步梳理清楚。
启动 SecureCRT 后,点击 Tools 菜单中的 Create Public Key...,系统会弹出一个密钥生成向导。按照引导逐步操作,中途会要求你设置一个 "passphrase"——有人把它称为“通行短语”,其实相当于给你的私钥再加一道安全锁。建议设置并牢记,因为一旦丢失就无法恢复。向导结束时,会询问是否将这套新密钥设为全局默认,选择“是”即可。
完成向导后,你指定的目录下会生成两个文件:Identity 和 Identity.pub。前者是你的私钥,需要妥善保管;后者是公钥,必须上传到服务器上。如果直接上传不方便,也可以直接复制文本内容。
接下来在服务器端,进入你的 home 目录(~),创建一个 .ssh 文件夹,并将权限设置为 700 或 755。
这里有一个需要注意的地方:SecureCRT 生成的公钥采用 IETF SECSH 格式,OpenSSH 并不直接支持,需要先转换格式。执行以下命令:
ssh-keygen -i > ~/.ssh/authorized_keys
系统会提示你输入公钥文件的名称(默认是 Identity.pub,如果你改过名则输入修改后的名称)。转换完成后,顺手将 authorized_keys 的权限修改为 600:
chmod 600 ~/.ssh/authorized_keys
至此就完成了所有配置。之后每次重启 SecureCRT,只需要输入一次 passphrase。只要不关闭 SecureCRT,无论打开多少个标签页,还是连接多少个使用同一套密钥的服务器,都不再需要重复输入了。
另外,如果你手头已有 SecureCRT 生成的 pubkey,还可以使用另一种转换方法:
# ssh-keygen -X -f key.pub > key.pub2
# mkdir ~/.ssh
# touch ~/.ssh/authorized_keys
# cat key.pub2 >> ~/.ssh/authorized_keys
# rm freebsd.pub*
# vi /etc/ssh/sshd_config
编辑 sshd_config 时,请确保以下参数配置正确:
Port 22
Protocol 2
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
最后别忘了重启 sshd 服务,使配置生效。之后你再登录服务器就省心多了。
