接上篇——Linux新手入门第十六天——WinSCP使用密钥登录
服务器也是有公钥和私钥的。
只不过WinSCP这里,国内网上的绝大多数教程只设置服务器这边的允许连接,既没跟你解释RSA算法,也没跟你解释服务器默认有没
有密钥。
原因是默认你拥有这部分知识,因为学到这算是常识了
输入命令:
service ssh status
你可以看到,Linux至少我用的Ubuntu18.04版本是有SSH服务并启动了的。
我不是很确定是不是之前apt-get了ifconfig这个指令顺便下载了的还是原本就有的,之后再去验证吧。(好吧,之后验证了发现不是更新ifconfig下载下来的,记不清什么时候装上去的了)
既然有SSH服务,那么一般就有密钥或是证明身份的东西,这些是安全连接的基础,
我们来确认是否正确,
输入命令:
ls /etc/ssh/
这里应该就是服务器的密钥所放的位置,从图中来看,默认好像是有3对,我们来看看是不是对应:
确实,看到了ssh-ed25519,可以确认这是服务器给公钥了。
点击了是,应该就会把这个公钥存下来,那么按理说,WinSCP应该有存放这些公钥的地方。
Google得到了以下内容:
Where are WinSCP sites stored?
It is typically located in C:\Users\username\ntuser. dat (or C:\Documents and Settings\username\ntuser. dat in Windows XP and older). Note that the file is usually hidden.
找了找,没发现,后来我觉得默认是放在WinSCP的根目录(结果也没找到)。
显然,这应该不是正确答案吧。
最后在 参考文档[3] 找到了答案,这个东西默认在注册表(可配置):
具体位置:
计算机\HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\SshHostKeys
如图所示,在这里看到了刚才的ssh-ed25519指纹。(你可以尝试删除它,那么下次连接的时候就会提示“是否将其主机密钥加入缓存”)
如果服务器的主机密钥与WinSCP缓存中的密钥不匹配,这就意味着服务器管理员已更改了主机密钥,服务器在特定情况下提供了不同的密钥,或者您实际上已连接到另一台伪装为服务器的计算机。
Q:什么叫不保存工作区的情况下关闭应用程序?
A:一般是因为你直接点了右上角,而不是关闭了一个连接标签:
像这样先点1标记的关闭按钮,再点击右上角关闭,就不会出现以上警告框了。
Q:那么究竟什么是工作区?
A:工作区是可以同时保存多个Connection的,并且会保存最后一次访问所停留的路径。你可以选择创建一个桌面快捷方式用来快速打开工作区,或从WinSCP的左侧栏目进行选中后访问。
实战:
第一件事,先禁用SSH使用密码登录,具体请看→这里。
如图所示桔黄色部分的改动。
我们需要先生成RSA密钥,这里建议使用PuTTYGen+额外密码,具体的生成方式上一篇已经介绍过了。
然后需要把公钥放进.ssh文件夹里面,这个文件夹root文件夹下有,用户文件夹下也有,作用是你放在哪个文件夹,就让你以哪个用户登录。
具体步骤(在root用户下进行):
mkdir /root/.ssh
chmod 700 /root/.ssh
vim /root/.ssh/authorized_keys
打开刚才生成的public key 文件,复制
从AAAA开头至“---- END SSH2 PUBLIC KEY ----“
的所有内容,粘贴到/root/.ssh/authorized_keys 文件中,
并保证所有字符在一行,
然后,再在开头加上ssh-rsa+空格,注意这很重要!!!
最后,确保authorized_keys的权限是600,
:wq保存并退出
打开WinSCP,新建连接,点击高级:
填充私钥文件路径:
直接确认。
输入完成IP就可以直接登录,如果你密钥还有额外密码的话会提示输入。
但一般情况下,免密登录。
尝试输入root:
确定 - 提示输入密钥的密码:
输入密码确定后即可登录。
尝试输入eksumic用户登录:
会发现服务器拒绝接受我们的密钥,这是因为/home/eksumic/.ssh/authorized_keys并没有被创建,需要照抄一份。
注意,这里有一个坑,千万不要直接复制文件,否则可读可写只属于root用户,你就过不了密钥验证了。
“owner”这个概念在Linux里面很重要。
Windows的用户可能不习惯这个设定,因为一直都是以管理员身份在玩,而且永远都是单用户。
需要额外提醒的是,每次创建新的连接的时候,需要重填一下密钥文件:
参考文档:
[1] where are the key files of winSCP located!?
[2] How to find SSH/FTP server fingerprint with WinSCP
[3] How do I transfer my settings to another computer? How do I import/export my settings?
Today's comments have reached the limit. If you want to comment, please wait until tomorrow (UTC-Time).
There is 18h54m39s left until you can comment.