SHELL之写入SSH公钥 | 风尘孤狼
0%

SHELL之写入SSH公钥

通过获得的shell去写一个ssh的用户公钥,记录一下步骤

原理

密钥形式登录的原理是利用密钥生成器制作一对密钥,一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

步骤

服务创建密钥

介绍一些ssh-keygen的参数

-b   指定密钥长度
-t   指定要创建的密钥类型,包括rsa和dsa,默认rsa非对称加密的方式
-f   指定用来保存密钥的文件名
-C   添加注释
-N   提供密语

也可以执行

ssh-keygen -t rsa -b 4096 //指定类型长度

ssh-keygen -t rsa //指定类型

密钥锁码在使用私钥时可以输入字符,或留空。
现在当前root目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。
其中,id_rsa 为私钥,id_rsa.pub 为公钥。

└─# ssh-keygen                                                             # 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  # 按 Enter回车即可
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):                      # 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again:                                              # 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa   # 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub   # 公钥
The key fingerprint is:
SHA256:6Nr2bOK9deJLoJZ+tU9jNSGGTlvFunuxYYYBZkI+XpY root@kali
The key's randomart image is:
+---[RSA 3072]----+
|       ..    ..  |
|       .. +o ..  |
|        o+E.+..  |
|       o * +o. . |
|      . S o  +o  |
|     . o .. o.=. |
|      =  .+.=+ + |
|     =ooo+.=..o  |
|    .o+==.oo..   |
+----[SHA256]-----+

在服务器上安装公钥

在安装前先切换目录至.ssh目录,接下来需要安装authorized_keys,授权密钥,安装后需要保证authorized_keys文件权限为600,目录权限为700。

[root@kali ]$ cd .ssh 
[root@kali .ssh]$ cat id_rsa.pub >> authorized_keys   
 
#公钥的安装注意:单尖括号>表示将文件内容全部替换掉;双尖括号是追加,这样就完成了公钥的安装。
#为了确保连接成功,保证文件权限正确
 
[root@kali .ssh]$ chmod 600 authorized_keys 
[root@kali .ssh]$ chmod 700 ~/.ssh

设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes             #root 用户允许通过 SSH 登录(可选)

最后,再重启 SSH 服务:

(这个重启ssh服务不会导致断连)

[root@host .ssh]$ service sshd restart

将私钥下载客户端连接

在服务器下载下来我们的私钥id_rsa文件,在本地机器使用SSH连接软件连接

如果是用命令,指定私钥登录的话,命令如下

ssh -i id_rsa(即本地私钥) 用户名@IP

总结

当渗透测试拿到一台linux服务器,查找/.ssh/文件夹下是否存在私钥文件,或*.pub文件,因为私钥和公钥一块生成。结合known_hosts文件,可以去连接未知的机器。
反之,如果拿到的机器只存在known_hosts文件,则无法利用。该文件只能说明曾经接收过公钥。
如果拿到的机器只有authorized_key文件,则证明存在用户连接过该机器。

制作不易,如若感觉写的不错,欢迎打赏