0、写在前面
我们通常使用SSH 客户端来远程使用 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力激活成功教程的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。但是即使是将端口设置为22之外的端口也容易泄露。为了保证服务器安全,此时希望使用密钥方式登录。而且使用秘钥登录能够避免每次登录时反复输入账户密码。
密码登录
- 优势
- 配置简单:只需要设个密码就行
- 登录简单:在任意设备上只需要输入账号密码就能登录目标服务器
- 劣势
- 麻烦:每次登录都需要输入账号密码
密钥登录
- 优势
- 快捷:避免每次登录时反复输入账户密码
- 安全:密钥文件相当于是超长超复杂的密码,暴力激活成功教程基本没戏,只有本地有密钥文件才能登录服务器
- 劣势
- 要从一台设备登录某台服务器,使用前必须先将密钥文件下载到该设备上
总结一下,根据辩证法的原理,优势和劣势都是相对的,没有十全十美的办法。
1、SSH密钥登录原理
1.1 密钥登录的原理是:
- 利用密钥生成器制作一对密钥——公钥和私钥。
- 将公钥添加到服务器的某个账户上,
- 将私钥下载到客户端,客户端利用私钥即可完成认证并登录。
1.2 非对称加密算法:
- RSA加密算法是经典的非对称加密算法,其基本流程如下:
- 用密钥生成器构建一对密钥——公钥和私钥。然后将公钥安装到服务器,私钥发送到客户端。
- 服务器向客户端发送数据的时候用公钥进行加密,客户端收到数据后用私钥解密。
- 客户端向服务器发送数据的时候用私钥进行加密,服务器收到数据后用公钥解密。
缺点在于:如果公钥在传输中泄漏,则黑客可以用公钥激活成功教程客户端发送的数据。
1.3 ssh密钥认证登录原理

参考:
SSH公钥登录(私钥认证)原理
什么叫SSH?原理详解,看这一篇就够了!
1.4 .ssh/里面的文件作用解释
id_rsa :私钥,与公钥配对使用。公钥加密的数据用私钥可以解密。既然是私,就不要乱发给别人,不然
id_rsa.pub :公钥,公钥相当于你的机器的身份信息。你想登录别台机器,你就把公钥发给他,并叫他安装到authorized_keys。
authorized_keys: 里面记录了服务器授权的所有公钥
known_hosts:ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
2、配置SSH密钥登录
建议流程:
用户在本地个人电脑生成一个密钥对,然后将公钥上传并安装到服务器上。具体流程参考:2.3 在服务器上安装公钥
2.1 配置SSH,打开秘钥登录功能、关闭密码登录功能(管理员做)
- 使用vim 编辑 /etc/ssh/sshd_config 文件
sudo vim /etc/ssh/sshd_config
讯享网
- 然后按 i进入编辑模式,在空白位置新增输入:
讯享网RSAAuthentication yes PubkeyAuthentication yes
此处便已经设置好了使用秘钥登录了,但是如果需要禁用密码登录可以进行如下设置:
PasswordAuthentication no
这一步最好是在能够用秘钥登录的前提下设置,不然秘钥又没法登录,又不能用密码登录,就麻烦了。
编辑完文本后按 ESC,输入:wq 保存文件并退出。
- 最后,输入如下指令重启 SSH 服务:
讯享网sudo service sshd restart
设置好之后,无法使用密码登录,直接ssh ,如果没有配置好公私钥,会返回Permission denied (publickey)
2.2 生成密钥对
在命令行输入
ssh-keygen
然后一路回车就行,生成秘钥,如图:

第一步是确认保存秘钥的位置,一般使用默认的位置即可。
第二步是为秘钥设置一个密码, 第三步是确认密码。如果输入的话,即使别人有你的秘钥没有你的密码也是无法登录你的服务器的,这样会比较保险但也比较繁琐,直接回车表示不设置密码。
后面的信息是给出秘钥、公钥保存的位置和秘钥信息。
最终我们可以看到在 /home/username目录中(windows在C:\Users\username)生成了一个隐藏目录 .ssh,里面包含两个密钥文件,id_rsa 为私钥,id_rsa.pub 为公钥。

2.3 在服务器上安装公钥
首先进入 /home/username/.ssh/,如果没有./ssh,那就创建然后进入
讯享网sudo mkdir /home/username/.ssh/ cd /home/username/.ssh/
- 安装方法1:将
id_rsa.pub上传到./ssh目录。然后在命令行输入以下命令安装公钥,其实就是将id_rsa.pub的内容添加到authorized_keys
cat id_rsa.pub >> authorized_keys
- 安装方法2:上传太麻烦了,直接打开
id_rsa.pub,复制其中内容,然后粘贴到authorized_keys中即可。如果已经有其他公钥了,记得换行再粘贴
讯享网vim authorized_keys
如此便完成了公钥的安装。 此外,为了确保连接成功,输入如下指令以保证以下文件权限正确
chown username.username -R /home/username/.ssh/ chmod 600 authorized_keys chmod 700 ~/.ssh
命令意思:
- 确保.ssh及其子目录的所有者必须是当前用户。
- 对于安装好的公钥
authorized_keys, 让当前用户具有读写权限,其余用户没有任何权限,以防被人修改,当前用户就登录不了了。 - 对
.ssh目录,让当前用户具有可读可写可执行权限,其余用户没有任何权限,确保ssh正常工作。
2.4 客户端利用私钥登录
如果是在服务器端生成的密钥对,首先要将.ssh文件夹中的私钥id_rsa下载到客户端,比如你的电脑,放在一个你不会删除的文件夹内,比如新建了一个 ssh 文件夹保存秘钥,为了便于管理 你也可以修改秘钥的文件名。
2.4.1 在MobaXterm中使用秘钥登录的操作
主要就是4、5步,勾选Use private key,然后点击文件图标选择刚才下载好的私钥文件,最后点OK就能成功登录了

2.4.2 在pycharm专业版配置ssh远程解释器
设置——项目——Python解释器——添加解释器——SSH

新建——输入主机名(IP)、端口、用户名

勾选密钥对,然后再然后点击文件图标选择刚才下载好的私钥文件,(密码短语空着,保存密码短语勾不勾无所谓),再点下一步

密码字段不用输入,直接跳过,点下一步

出现如下界面就表示登录成功了

之后再去选择服务器目录下的python解释器就好了

2.4.3 ssh、scp命令行使用密钥登录
第一次需要用 -i 指定私钥文件,之后就不用了,很方便的!!!
ssh
讯享网ssh -i ~/.ssh/id_rsa username@10.123.78.125
ssh的使用方法
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command]
scp
讯享网scp -i ~/.ssh/id_rsa -r 要传输的文件地址 username@10.123.78.125:目标目录地址
scp的使用方法
usage: scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
3、报错解决
3.1 Permissions 0644
- 错误信息:
Permissions 0644 for ‘/home/xxxx/.ssh/my_id_rsa’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
- 解决办法:
按照错误提示,意思是:my_id_rsa这个文件太开放了,要求私钥文件不能被其他人访问。
所以只要将所属组和其他人的read权限取消即可。
0644其实就是表示my_id_rsa这个文件的权限是644,要变得不那么open,那就把权限设成600,
讯享网chmod 600 my_id_rsa
参考链接
Ubuntu 设置 SSH 通过密钥登录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/119568.html