问题描述
最近在使用CRT软件连接Linux服务器时遇到了一个问题,希望得到大家的帮助。
问题现象
当我使用CRT软件连接Linux服务器时,会出现一下提示信息:
The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?
此时,我输入yes之后,会再次出现如下提示信息:
Failed to add the host to the list of known hosts (/home/user/.ssh/known_hosts).
然后,CRT就自动关闭了,连接失败。
问题分析
这种情况通常是由于CRT软件没有权限写入SSH公钥,导致连接失败。
SSH公钥
SSH公钥是一种身份认证方式,当我们使用SSH连接到另一台计算机时,会在本地生成一对密钥(公钥和私钥),其中公钥被保存在远程服务器上,私钥被保存在本地。当我们连接到远程服务器时,服务器会向客户端发送一段随机字符串,客户端会使用自己的私钥对这段随机字符串进行加密,发送给服务器。服务器收到加密后的字符串后,会使用预先保存的公钥对其进行解密,如果解密结果与发送的随机字符串一致,那么就可以连接到服务器了。
解决方法
解决这个问题的方法其实很简单,只需要在CRT软件中设置一个保存SSH公钥的路径即可。
修改配置
在CRT软件中,选择 Options -> Global Options,进入全局设置。然后在左侧栏中选择 SSH2 -> Public Keys,找到 "Use OpenSSH or ssh.com format key files" 选项,并将其打上勾:
接着,在 "Public key file" 选项中输入保存路径,例如:C:\Users\Administrator\.ssh\id_rsa.pub,然后点击 "Apply" 和 "OK" 保存修改:
保存SSH公钥
最后,我们需要手动创建一个保存SSH公钥的目录,并设置权限。在终端中执行如下命令:
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
总结
通过以上的设置,我们就可以成功连接到Linux服务器了。
需要注意的是,SSH公钥一定要保存在正确的位置,并且设置路径时要确保路径的正确性。