`
matt.u
  • 浏览: 130326 次
  • 性别: Icon_minigender_1
  • 来自: CQ
社区版块
存档分类
最新评论

Linux SSH配置和禁止Root远程登陆设置

阅读更多
一、修改vi /etc/ssh/sshd_config 文件
1、修改默认端口:默认Port为22,并且已经注释掉了;修改是把注释去掉,并修改成其它的端口。
2、禁止root用户远程登陆:修改PermitRootLogin,默认为yes且注释掉了;修改是把注释去掉,并改成no。
3、PermitEmptyPasswords   no不允许空密码用户login


二、ssh的公钥认证配置:
修改vi /etc/ssh/sshd_config 文件
RSAAuthentication yes        # 启用 RSA 认证(默认是注释掉的,将注释去掉,如果不是yes,改为yes)
PubkeyAuthentication yes     # 启用公钥认证(默认是注释掉的,将注释去掉,如果不是yes,改为yes)
PasswordAuthentication no    # 禁止密码认证(改为no,默认为yes是用密码认证)
StrictModes no   #修改为no,默认为yes.如果不修改用key登陆是出现server refused our key(如果StrictModes为yes必需保证存放公钥的文件夹的拥有与登陆用户名是相同的.“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。)


之后重新启动ssh服务:/etc/init.d/ssh restart


生成登陆公钥与私钥,
[root@usousou192_168_0_21 ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /home/linden.guo/.ssh/id_rsa (生成私钥与公钥存放位置)
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again:再次输入密码
Your identification has been saved in /home/linden.guo/.ssh/id_rsa.    (生成的私钥)
Your public key has been saved in /home/linden.guo/.ssh/id_rsa.pub. (生成的公钥)
The key fingerprint is:
76:04:4d:44:25:37:0f:b1:a5:b7:6e:63:d4:97:22:6b root@usousou192_168_0_21

将生成的公钥匙id_rsa.pub传到要登陆的服务器上并追加到authorized_keys文件中,放到用户目录的.ssh中 cat id_rsa.pub >> .ssh/authorized_keys (如果没有authorized_keys,可直接将id_rsa.pub重命名为authorized_keys,自己认为,没有测试过)


使用putty连接ssh服务器。为了使用公钥认证,我们需要同时下载 puttygen 这个工具来生成 putty 所使用的密钥
如果你按照上面的介绍,在Linux下生成了公钥和密钥的话,那么需要利用 puttygen 将密钥转换成 putty 使用的格式。将Linux下生成的密钥 id_rsa 复制到 Windows 下。启动 puttygen,然后单击Load按钮,选择文件类型为所有文件,然后选择 id_rsa,打开。若在生成密钥时输入了密码,则打开时需要输入该密码(用linux生成密钥时输入的密码)。之后就可以在 puttygen 的主界面上单击 Save private key,保存成 putty 格式的密钥。

最好确定用户目录下的.ssh文件夹对于拥有者有读写执行的权限,最低要有执行权限,如700或者100;authorized_keys文件中有读的权限


注:AuthorizedKeysFile      .ssh/authorized_keys(认证文件的目录与公钥文件名称,可以修改,并且相应目录也要修改,如AuthorizedKeysFile      .sshd/linden.guo_keys,需要在用户目录下建立.sshd文件夹,将linden.guo_keys文件放到下面)


三、为什么要使用公钥认证
通常,通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。但是密码认证有以下的缺点:

用户无法设置空密码(即使系统允许空密码,也会十分危险)
密码容易被人偷窥或猜到
服务器上的一个帐户若要给多人使用,则必须让所有使用者都知道密码,导致密码容易泄露,而且修改密码时必须通知所有人
而使用公钥认证则可以解决上述问题。

公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦
多个使用者可以通过各自的密钥登录到系统上的同一个用户
公钥认证的原理
所谓的公钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。

ssh 的公钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。为了说明方便,以下将使用这些符号。

Ac 客户端公钥
Bc 客户端密钥
As 服务器公钥
Bs 服务器密钥

在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

认证过程分为两个步骤。

会话密钥(session key)生成
客户端请求连接服务器,服务器将 As 发送给客户端。
服务器生成会话ID(session id),设为 p,发送给客户端。
客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
客户端将 r 用 As 进行加密,结果发送给服务器。
服务器用 Bs 进行解密,获得 r。
服务器进行 r xor p 的运算,获得 q。
至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
认证
服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
客户端使用 Bc 解密 S(x) 得到 x
客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
服务器计算 q + x 的 md5 值 m(q+x)
客户端将 n(q+x) 发送给服务器
服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功
服务器端设置
使用公钥认证需要对服务器进行一些设置。修改 /etc/sshd_config 的以下配置。

RSAAuthentication yes        # 启用 RSA 认证
PubkeyAuthentication yes     # 启用公钥认证
PasswordAuthentication no    # 禁止密码认证StrictModes no   #修改为no,默认为yes.如果不修改用key登陆是出现server refused our key然后重新启动 sshd。

/etc/init.d/ssh restart客户端设置
Linux
假设客户端的用户 charlee 要以 guest 用户登录到服务器上。首先在客户端执行下面的命令。

[charlee@client:~]$ ssh-keygen -t rsa
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/charlee/.ssh/id_rsa):
Enterpassphrase (empty for no passphrase): 输入密码
Enter same passphrase again:   再次输入密码
Your identification has been sabed in /home/charlee/.ssh/id_rsa
Your public key has been saved in /home/charlee/.ssh/id_rsa.pub生成的文件保存在主目录的 .ssh 目录下,id_rsa为客户端密钥,id_rsa.pub 为客户端公钥。

之后,通过 U 盘等方式将公钥 id_rsa.pub 复制到服务器上,并执行下列命令。

[guest@server:~]$ cat id_rsa.pub >> .ssh/authorized_keys其中 id_rsa.pub 是客户端的用户 charlee 的公钥。

这样在客户端即可通过以下的命令连接服务器。

[charlee@client:~]$ ssh -l guest server若不想每次登录服务器时都输入密码,可以先执行下列命令:

[charlee@client:~]$ ssh-add
Enter passphrase for /home/charlee/.ssh/id_rsa: 输入密码
Identity added: /home/charlee/.ssh/id_rsa (/home/charlee/.ssh/id_rsa)以后登录服务器就不需要输入密码了。

Windows
假设我们使用putty连接ssh服务器。为了使用公钥认证,我们需要同时下载 puttygen 这个工具来生成 putty 所使用的密钥。

使用Linux下生成的公钥和密钥的情况
如果你按照上面的介绍,在Linux下生成了公钥和密钥的话,那么需要利用 puttygen 将密钥转换成 putty 使用的格式。

将Linux下生成的密钥 id_rsa 复制到 Windows 下。启动 puttygen,然后单击Load按钮,选择文件类型为所有文件,然后选择 id_rsa,打开。若在生成密钥时输入了密码,则打开时需要输入该密码。之后就可以在 puttygen 的主界面上单击 Save private key,保存成 putty 格式的密钥。

使用puttygen生成公钥和密钥
你也可以利用 puttygen 直接生成公钥和密钥。打开 puttygen,然后在画面下方的 Parameters 栏选择加密算法和加密长度(一般取默认值即可),最后单击 Generate。画面上会出现一个进度条,在界面上随意移动鼠标以生成随机数。最后提示生成结束,单击 Save private key 按钮保存密钥。最后将上方的Public key for pasting into OpenSSH authorized_keys file栏中的内容复制到 Linux 下用户主目录下的 ~/.ssh/authorized_keys 文件中。

设置 putty 使用公钥认证
先在putty中设置好连接的主机名、端口等信息(说明省略)。使用公钥认证需要设置两个地方:一个是 Connection 中的 Auto-login username,输入在服务器上的用户名;另一个是 Connection->SSH->Auth中的 Private key file for authentication,选择刚才转换或生成的 .ppk 格式的密钥。之后即可使用公钥认证进行连接了。
分享到:
评论

相关推荐

    Linux_SSH配置和禁止Root远程登陆设置文档

    本文将详细介绍如何在Linux环境下配置SSH服务,特别是如何修改默认端口、禁止Root远程登录,以及如何设置公钥认证,从而加强系统的安全性。 #### 二、配置SSH服务 ##### 1. 修改默认端口 SSH服务默认监听在TCP...

    Linux SSH配置和禁止Root远程登陆设置文档(技术学习).docx

    Linux SSH 配置和禁止 Root 远程登录设置 Linux SSH 配置和禁止 Root 远程登录设置是 Linux 系统中的一项重要的安全设置。通过本文档,我们将了解如何配置 SSH 服务器,禁止 Root 用户远程登录,提高 Linux 系统的...

    Linux SSH配置和禁止Root远程登陆设置文档.pdf

    Linux SSH 配置和禁止 Root 远程登陆设置 ...本文档详细介绍了 Linux SSH 配置和禁止 Root 远程登陆设置的步骤和方法,通过修改 SSH 服务器的配置文件和生成公钥与私钥,可以实现 SSH 服务器的安全配置。

    Linux SSH配置和禁止Root远程登陆设置文档之欧阳术创编.docx

    【Linux SSH配置与Root远程登陆禁止】 SSH (Secure SHell) 是一种网络协议,用于在不安全的网络...以上就是关于Linux SSH配置及禁止Root远程登录的详细说明。遵循这些步骤,可以提升系统的安全性并降低被攻击的风险。

    Linux SSH配置和禁止Root远程登陆设置文档(技术学习).pdf

    ...

    Linux+修改SSH端口+和+禁止Root远程登陆.doc

    要禁止 root 远程登陆,需要编辑 SSH 配置文件 `/etc/ssh/sshd_config`,将 `PermitRootLogin yes` 改为 `PermitRootLogin no`,然后重启 SSH 服务。 此外,还需要创建一个普通权限的用户,以便远程登陆服务器,...

    Kali系列之root账户ssh远程登录配置.docx

    总的来说,配置Kali Linux的root账户SSH远程登录涉及到了系统安全策略、账户管理以及网络服务配置等多个方面。理解这些操作有助于提升系统的安全性,同时也能确保远程访问的顺畅。务必遵循最佳实践,定期更新密码和...

    Debian如何配置SSH远程登录(附root登录方法)

    本篇文章将详细介绍如何在Debian系统中配置SSH远程登录,并提供一种允许root用户远程登录的方法。需要注意的是,在真实的生产环境中,出于安全考量,一般不建议开启root用户的远程登录功能。 #### 二、SSH远程登录...

    Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器.pdf

    在这个资源中,我们将学习如何在 Ubuntu-18.04 系统中修改 root 用户密码、安装 SSH 服务、允许 root 用户远程登录和安装 vsftp 服务器。 修改 root 用户密码 在 Ubuntu-18.04 系统中,默认情况下 root 用户的密码...

    ssh远程登录linux

    综上所述,SSH远程登录Linux是运维工作中不可或缺的一部分,熟练掌握其使用和配置,能大大提高工作效率并保障系统的安全性。了解并应用上述知识点,你就能轻松地在不同环境下远程管理和维护Linux服务器了。

    Linux系统禁止root账号远程登录的命令

    然而,禁用root远程登录后,你需要创建一个具有管理员权限的新用户,以便在必要时执行需要root权限的任务。以下是如何创建新用户的步骤: 1. 添加新用户,例如名为`xiaowen`: ```bash useradd xiaowen ``` 2...

    Linux下限制SSH登陆以及密码策略

    这样就可以禁止 root 用户通过 SSH 远程登陆系统。 二、设置密码策略 密码策略是系统安全的一个重要方面。我们可以通过设置密码策略来限制用户密码的长度、复杂度和更改频率。在 Linux 系统中,我们可以通过修改 `...

    linux ssh key

    Linux SSH Key 生成和使用 Linux SSH key 是一种常用的身份验证方式,通过生成公钥和私钥来实现无密码登录远程 Linux 主机。...现在,您已经成功地使用 SSH key 登录了远程 Linux 主机,可以进行各种操作。

    SSH远程登录linux虚拟机.pdf

    SSH远程登录Linux虚拟机是一项利用SSH(Secure Shell)...具体操作中,我们需要注意网络配置的正确性,以及SSH服务的安全设置,例如禁用root用户远程登录、更改默认SSH端口号、设置SSH密钥认证等,以保障系统的安全。

    SSH远程登录linux虚拟机.docx

    SSH远程登录Linux虚拟机 SSH(Secure Shell)是一种安全的远程登录协议...SSH远程登录Linux虚拟机需要设置IP地址、检查网络连通性、解决IP地址不在同一网段的问题,并使用SSH Secure Shell Client来登录Linux虚拟机。

    linuxssh安全的加固方法.pdf

    Linux SSH 安全加固方法可以通过禁用 ROOT 远程登录、设置普通权限用户、禁用某个用户登录、使用密钥认证登录服务器等方式来增强服务器的安全性。同时,需要注意配置文件的权限、密钥的安全性和传输等问题,以确保...

    Linux下Telnet、ssh服务的配置和使用

    ### Linux 下 Telnet 和 SSH 服务的配置与使用详解 #### 一、Telnet 服务配置及使用 **1. Telnet 安装** 在 Linux 系统中配置 Telnet 服务之前,需要确保系统已经安装了 Telnet 的客户端和服务端组件。一般情况下...

    嵌入式Linux SSH服务搭建 编译好的ssh

    嵌入式Linux SSH服务搭建是将Secure Shell (SSH) 服务应用于资源有限的嵌入式设备上,以实现远程安全登录、文件传输等功能。SSH是一种网络协议,它提供了加密网络服务,确保在不安全的网络环境中传输数据的安全性。...

Global site tag (gtag.js) - Google Analytics