美文网首页心理摄影读书
ssh禁止密码方式登录

ssh禁止密码方式登录

作者: 从零开始学ArchLinux | 来源:发表于2024-05-10 12:27 被阅读0次

我们昨天已经实现了root账户通过密码使用ssh登录Arch Linux系统,但是通过密码登录是不安全的,容易被暴力破解,今天我们的目标是配置ssh公钥和私钥,并限制只能使用私钥登录Arch Linux。

实现今天的目标主要有三个步骤,接下来将按照下边的三个步骤进行操作:

  1. 在Win10的机器上生成公钥和私钥
  2. 将生成的公钥上传到Arch Linux
  3. 配置sshd禁止密码登录

生成公钥和私钥

我的Win10电脑上已经安装过git的客户端,客户端中包含了OpenSSH相关的命令行工具,所以直接使用git-bash生成ssh key,具体操作如下:

# 生成时一路enter,中间有输入保存的目录、文件名称、密码,都是使用的默认配置(默认目录、空密码)
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/danny/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/danny/.ssh/id_ed25519
Your public key has been saved in /c/Users/danny/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:kRtOw8i3Pc6aWVyP6ZDmpvAmMS7cjjeqp3/9JP7FyWc danny@DESKTOP-SSJG5N5
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|     . o .       |
|      o O        |
|       + B       |
|        S o .    |
|      o  + * =   |
|   . o.+. X B E  |
|    +.B+oX.+ o   |
|  o=+*.+B=+ .    |
+----[SHA256]-----+

上传公钥到服务器

上一步生成了两个文件: id_ed25519id_ed25519.pub,其中后缀为.pub的文件就是公钥,接下来我们将这个文件上传到Arch Linux系统。
第一种方式,使用OpenSSH自带的命令行工具ssh-copy-id:

# 省略了上传的文件和服务器端口参数,如果上传文件和端口不是默认的,可以使用完成的命令:
# ssh-copy-id -i /c/Users/danny/.ssh/id_ed25519.pub -p 22 root@172.19.143.111
$ ssh-copy-id root@172.19.143.111
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/danny/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.19.143.111's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.19.143.111'"
and check to make sure that only the key(s) you wanted were added.

第二种方式,使用scp命令行将公钥文件上传到服务器root用户home目录,然后ssh命令登录Arch Linux,将上传的文件拼接到.ssh/authorized_keys,如果目录或者文件不存在,则需要手动创建。

# 上传公钥到服务器,注意最后的英文冒号,一定要有
$ scp /c/Users/danny/.ssh/id_ed25519.pub root@172.19.143.111:
id_ed25519.pub                                100%  103    52.0KB/s   00:00
# 将文件追加到authorized_keys,
# 因为我这里有,所以不需要创建目录和文件
# 如果没有需要创建`.ssh`目录、authorized_keys文件
# 最后删除上传的公钥文件
$ ssh -P 22 root@172.19.143.111
Last login: Fri May 10 23:25:23 2024 from 172.19.128.1
[root@archlinux ~]# ls -al
total 32
drwxr-x---  5 root root 4096 May 10 23:32 .
drwxr-xr-x 17 root root 4096 May  1 22:22 ..
-rw-------  1 root root 3742 May 10 23:32 .bash_history
drwx------  3 root root 4096 May  9 22:13 .cache
drwx------  3 root root 4096 May  1 22:22 .gnupg
-rw-r--r--  1 root root  103 May 10 23:32 id_ed25519.pub
drwx------  2 root root 4096 May 10 23:08 .ssh
-rw-------  1 root root 3479 May 10 21:50 .viminfo
[root@archlinux ~]# cat id_ed25519.pub >> .ssh/authorized_keys
[root@archlinux ~]# rm id_ed25519.pub

到这里我们已经上传公钥文件成功了。

修改配置文件

上边已经上传公钥成功了,接下来要修改配置文件,限制密码登录。在这之前的我们先测试一下:

# 登陆时未输入密码,登录成功
$ ssh -P 22 root@172.19.143.111
Last login: Fri May 10 23:35:01 2024 from 172.19.128.1
[root@archlinux ~]#

以上说明,我们已经可以使用公钥验证登录了,可以放心大胆的禁止密码登录方式了。

# vim打开配置文件
vim /etc/ssh/sshd_config
# 将PermitRootLogin 修改为 prohibit-password
# 将PasswordAuthentication 修改为 no

修改配置文件后,验证配置是否正确,之后在进行重启sshd服务

# 验证配置文件是否正确,未输出信息表明配置正确
[root@archlinux ~]# sshd -t
# 重启sshd服务
[root@archlinux ~]# systemctl restart sshd.service

最后,在Win10的git客户端使用ssh验证:

$ ssh -P 22 root@172.19.143.111
Last login: Fri May 10 23:43:58 2024 from 172.19.128.1
[root@archlinux ~]#

登录成功。

总结,使用root用户并用密码方式登录服务器,对于服务起来说容易遭到暴力破解密码攻击,所以尽量使用ssh key的方式。在这里主要用到ssh-keygenssh-copy-id或者scpsshsshd,以及sshd_config配置文件中的PermitRootLoginPasswordAuthentication参数。

相关文章

  • ssh 优化

    ssh服务的配置文件为 /etc/ssh/sshd_config 禁用密码登录 修改端口号 禁止空密码登录 优化s...

  • server 基本安全 证书登录

    创建非 root 用户 ssh 秘钥对认证 禁止密码, root 用户登录 禁止 ping

  • vsftpd服务新增ftp账号

    创建用户user1,-d指定home目录为/home/user1,-s禁止用户ssh方式登录 设置用户密码 修改目...

  • SSH免密码远程登录

    一般的SSH远程登录服务器 ssh登录使用ssh user@host 的方式,如: 这种方式比较低效,尤其是密码复...

  • Mac下SSH免密登陆

    吐槽 每次ssh远程登录Mac都需要密码,很烦人,接下来我们就来使用公钥私钥的方式,来ssh远程登录Mac免密码。...

  • 12.创建sftp服务器

    切换到root用户 创建用户vmax_user,并禁止ssh登录,不创建家目录 修改密码,密码安全级别要求很高 v...

  • ssh服务

    安装 登录方式 无密码登陆(ssh密钥认证) 修改端口号

  • linux 文件数据增量同步

    首先配置:ssh免密码登录 ssh免密码登录 同步脚本: /usr/bin/rsync -avz /datamnt...

  • 禁止密码,禁止根用户登录

    禁止密码,禁止根用户登录

  • useradd

    添加用户 sudo 免密码 参考链接 禁止密码登录 禁止root 登录 只允许指定用户登录 重启sshd

网友评论

    本文标题:ssh禁止密码方式登录

    本文链接:https://www.haomeiwen.com/subject/fdmsfjtx.html