SSH.Login 使用密钥登录ssh

发布时间 2023-06-29 17:41:03作者: 风之郁闷

1.使用密钥登录,首先得生成密钥对,win使用powershell,unix使用终端

ssh-keygen -t rsa

#键入上面的指令将显示下面内容:

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\User/.ssh/id_rsa): c:\users\user\desktop\id_rsa #这里可以填自己的地址,用来选择路径放置密钥对
Enter passphrase (empty for no passphrase):        #这里是再加一道密码,登录时使用密钥+密码登录,直接空格就是无密码,登录时直接就能用密钥登录
Enter same passphrase again:
Your identification has been saved in c:\users\klezy\desktop\id_rsa
Your public key has been saved in c:\users\klezy\desktop\id_rsa.pub
The key fingerprint is:
SHA256:wVvtnBtZVTK4XdfghRkt5i41Qar1/Nc0HBF0K2ochwY klezy@ThinkPad-E14
The key's randomart image is:
+---[RSA 3072]----+
| E oBXO          |
| . ..oo*=O       |
| o .++Bo*.       |
| +o==*B .        |
| S .+*oo+.       |
| . .o.oo         |
| .. +            |
| .               |
|                 |
+----[SHA256]-----+

#生成完毕

当你查看该文件夹,会发现有两个文件 id_rsa 和 id_rsa.pub。第一个就是私钥,自己先保存好,用于登录被控端,第二个带.pub后缀的是公钥,需要先上传到你想登录的设备上,才可以用私钥登录

2.1 传输公钥至被控端(unix)

注意:在这里win端就没有下面的指令了,需要在2.2里使用手动传输公钥

使用下面指令,将公钥传输到被控设备(unix设备)

# ssh-copy-id -i [当前生成的公钥]  [被控账户]@[被控设备IP]
# 示例:
ssh-copy-id -i ~/.ssh/id_rsa.pub test@192.168.3.55

输入账号密码就可以完成公钥传输

2.2 手动传输公钥至被控端 (不太推荐)

有时候实在没办法的时候就只能自己上传公钥了,先登录被控端,用scp把公钥文件拷到被控端。复制公钥内容到 ~/.ssh/authorized_keys 这个文件里,如果没有可以自己创建再输入或是直接用cp把公钥文件拷成这个文件。

这时候你会发现一个问题,假如这个 authorized_keys 里面已经有其他公钥了,怎么办呢。两种方法:

1)复制公钥内容,在 authorized_keys 里加换行新起一行粘贴,像下面这样:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDXw0d3Bfgbt/YhYlJDSx3sJVoGljNy2PjdXFsUkeEIltI40I2wU0Q7gPfoCf3rnbzF80FrMJwiFEjCDcPMGvvFx1Rwlds3uxBMCm1H1zQKZDstu6j5DdxgyX608skPvpz+BOI6RkNL4f1utONGTvpHa4bqO0Iv6lczMmO2jS98bYtE2Y/4TodR5tdXSCuHALqEI672mMYeXu8zuerjXWZT86olRc1aDNT3BSYoLANy9qZOQyrnVYipnu4qZbqmlmmeZNE0WeTaoGKJBQrufB2wXaP5Lv0ILiTxSj42HFkUmohhcUlbf9a4iVyH44ZUP3Z7bgxPfeXc8Em6uL8OhvlQEveIkJaHkqQdZm+md6ZuInl2NQIVEJ9i8I2Tpl0+YwK97En/xrvGMA1PzpuDTOqmnX9SbPdnHj/9fwtQCgdq3iRV3Q40OHRw5g/aX5yVlqp0O6x5hgzfjRkoZcJj6cE5Eb1vU425xhj+nDzW6lmqao/5DAoLeTlWePfpZi3MS2U= 

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiNsTQw+64vzTcYr0L/Qotjf7w1kpYOHPZRWSkHgsbNOA7DlzJGKX/xC5O49hw3Ehl1VY53yVeTjyv463ZlLMBQlBEo647qylfnwxPfgXZ8nc3hGrEhh9C1XUx8ku0Fewkg1JSf18X4VwhhyqTS9oioLrA4A9pgQD1O38QoCL+g8402QTYeO74UGbKX0vdC3JNRbG6uh4xLnb9lTcacxlFdolAsUDLnfjbec6e/JHcPyUU098yV0l/V2KVj/USgUOKd2/orCs2Mhe/ca3qxQHMFGQaRyqQS9P/tp21NQAsUNVEmwxxui4QYHKZ5jTLwNMxYutUrakUq6Ka9oskt4J7HqnogLqgYHdcrumABE8GHvOFHHztHaoyV8C+favDTB95AGPvXUFFpiGMUo0/jNtQ3kod26OxABViO/1oYvGSf5Bf6RsQb9De2D3r/bmJoeVNP00dEtu6joABZTZLn/6iYsV7Qt+L2eAnI8rybjcovOKas+A+c6kBdXkGttlPkf0=

有新的就往下加,不破坏原有公钥内容就行

2)直接将公钥文件命令成 authorized_keys2,放置在.shh 文件夹里,以此类推,authorized_keys3,authorized_keys4......

登录还有个问题,假如这个被控设备有多个账户,我想一个密钥可以登录所有账户怎么办呢?

答就在每个账户home目录下面的.ssh 文件夹下面添加公钥进authorized_keys里,没有就自己创建,比如:

我想在A设备的里的user1和user2两个账户都用一个密钥登录,那就将公钥添加进 /home/user1/.ssh/authorized_keys 和 /home/user2/.ssh/authorized_keys里

3.使用密钥登录

这时候就可以把自己一开始生成的私钥文件 id_rsa 制作成pem文件,用来登录了,方法很简单,直接重命名添加个“.pem”的后缀名,如“id_rsa.pem"。

有些人用复制方式,生成的pem文件会报错,那是因为他复制的时候,把开头和结尾的那一串文字给漏掉了。

-----BEGIN OPENSSH PRIVATE KEY-----  #这一行不可漏掉
# 私钥正文
-----END OPENSSH PRIVATE KEY-----    #这一行不可漏掉

就是上面 BEGIN 和下面 END 这两行看似注释一样的文字