2025年【linux】linux设置ssh密钥登录详细教程,附Mobaxterm和pycharm ssh python解释器配置教程

【linux】linux设置ssh密钥登录详细教程,附Mobaxterm和pycharm ssh python解释器配置教程0 写在前面 我们通常使用 SSH 客户端来远程使用 Linux 服务器 但是 一般的密码方式登录 容易有密码被暴力激活成功教程的问题 所以 一般我们会将 SSH 的端口设置为默认的 22 以外的端口 或者禁用 root 账户登录 但是即使是将端口设置为 22 之外的端口也容易泄露 为了保证服务器安全 此时希望使用密钥方式登录

大家好,我是讯享网,很高兴认识大家。

0、写在前面

我们通常使用SSH 客户端来远程使用 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力激活成功教程的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。但是即使是将端口设置为22之外的端口也容易泄露。为了保证服务器安全,此时希望使用密钥方式登录。而且使用秘钥登录能够避免每次登录时反复输入账户密码。

密码登录

  • 优势
    • 配置简单:只需要设个密码就行
    • 登录简单:在任意设备上只需要输入账号密码就能登录目标服务器
  • 劣势
    • 麻烦:每次登录都需要输入账号密码

密钥登录

  • 优势
    • 快捷:避免每次登录时反复输入账户密码
    • 安全:密钥文件相当于是超长超复杂的密码,暴力激活成功教程基本没戏,只有本地有密钥文件才能登录服务器
  • 劣势
    • 要从一台设备登录某台服务器,使用前必须先将密钥文件下载到该设备上

总结一下,根据辩证法的原理,优势和劣势都是相对的,没有十全十美的办法。

1、SSH密钥登录原理

1.1 密钥登录的原理是:

  1. 利用密钥生成器制作一对密钥——公钥和私钥。
  2. 将公钥添加到服务器的某个账户上,
  3. 将私钥下载到客户端,客户端利用私钥即可完成认证并登录。

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,打开秘钥登录功能、关闭密码登录功能(管理员做)

  1. 使用vim 编辑 /etc/ssh/sshd_config 文件
sudo vim /etc/ssh/sshd_config 

讯享网
  1. 然后按 i进入编辑模式,在空白位置新增输入:
讯享网RSAAuthentication yes PubkeyAuthentication yes 

此处便已经设置好了使用秘钥登录了,但是如果需要禁用密码登录可以进行如下设置:

PasswordAuthentication no 

这一步最好是在能够用秘钥登录的前提下设置,不然秘钥又没法登录,又不能用密码登录,就麻烦了。

编辑完文本后按 ESC,输入:wq 保存文件并退出。

  1. 最后,输入如下指令重启 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 

命令意思:

  1. 确保.ssh及其子目录的所有者必须是当前用户。
  2. 对于安装好的公钥authorized_keys, 让当前用户具有读写权限,其余用户没有任何权限,以防被人修改,当前用户就登录不了了。
  3. .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 通过密钥登录

小讯
上一篇 2025-03-10 10:22
下一篇 2025-01-26 20:52

相关推荐

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