Linux SSH密钥登陆

版权声明:本文为博主原创文章,未经博主允许也可以任意转载。 https://blog.csdn.net/fudaxing/article/details/86297657

兄Die,写代码太累了?孤独寂寞冷?还没有女朋友吧?
关注微信公众号(瓠悠笑软件部落),送知识!送知识!送温暖!送工作!送女朋友!插科打诨哟!
huyouxiao.com
用户名和密码就可以登陆Linux主机,但有缺点:

  • 密码忘了,泄露了就悲剧了
  • 可以撞库破解

建议用SSH密钥登陆。 ssh-keygen生成2048位RSA密钥对

ssh-keygen
huxing@huxing:~/free-repo$ ssh-keygen 
Generating public/private rsa key pair.
#提升输入保存密钥key的地方,按回车默认保存在登陆用户home目录下的.ssh/id_rsa. 直接按回车
Enter file in which to save the key (/home/huxing/.ssh/id_rsa): 
#之前已生成密钥对,则可能会看到如下所示的提示。 
#选择覆盖磁盘上的密钥,则无法再使用以前的密钥进行身份验证。选择是是一个不可逆转的破坏性过程。
/home/huxing/.ssh/id_rsa already exists.
Overwrite (y/n)? y
#提示您输入可选的密码短语,用于加密磁盘上的私钥文件。
#如果输入一个,则每次使用此密钥时都必须提供它
#建议使用密码短语,但您可以按此键ENTER绕过此提示。
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
#创建过程的最后一步。您现在拥有可用于进行身份验证的公钥和私钥。
Your identification has been saved in /home/huxing/.ssh/id_rsa.
Your public key has been saved in /home/huxing/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QQ9XFr6jQgxZYD9uJmN/8yd0fId6G+3fjwWZLqn8NVE huxing@huxing
The key's randomart image is:
+---[RSA 2048]----+
|      o.+ ..+.   |
|     . = + o     |
|      o + . .   E|
|       + o   . + |
|      + S   o.=. |
|     . B   ..+++o|
|        o +.oo=.+|
|         + +ooo*.|
|          o.o+o.B|
+----[SHA256]-----+

# 切换到生成密钥的目录下
huxing@huxing:~/.ssh$ cd ~/.ssh
huxing@huxing:~/.ssh$ ls -al
total 40
drwxrwxr-x  2 huxing huxing  4096 Aug 13 10:01 .
drwxr-xr-x 71 huxing huxing 12288 Jan 11 10:06 ..
-rw-------  1 huxing huxing  1675 Jan 11 10:40 id_rsa
-rw-r--r--  1 huxing huxing   395 Jan 11 10:40 id_rsa.pub
-rw-------  1 huxing huxing  7783 Dec 23 16:19 known_hosts
-rw-rw-r--  1 huxing huxing  6011 May 17  2018 known_hosts.old

# 这里id_rsa就是私钥  id_rsa.pub 就是公钥

把生成的公钥追加到你要登陆的服务器账户的 ~/.ssh/authorized_keys 文件里面。有三个方法,任选一个就可以了:

  • 在本机上使用 ssh-copy-id 命令
# 这里-p参数是指定ssh的登陆端口,如果是默认端口22。就不用指定了
huxing@huxing:~/.ssh$ ssh-copy-id [email protected] -p 2222
/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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '2222' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

# 添加后就可以登陆了
huxing@huxing:~/.ssh$ ssh -p '2222' '[email protected]'
Last login: Fri Jan 11 11:03:04 2019 from 10.8.10.28
[hux@app528 ~]$
  • 在本机上使用管道命令(|) 把你的key追加到 ~/.ssh/authorized_keys file
    前提: 你没有安装ssh-copy-id工具,但是有要登陆服务器的IP, 帐号,密码.
cat ~/.ssh/id_rsa.pub | ssh  [email protected] -p 2222 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
 
 #   cat ~/.ssh/id_rsa.pub    含义: 用cat命令查看了公钥文件id_rsa.pub的文本
 #  |       含义: 然后用管道命令把文本内容作为下一个命令的输入数据
 #   ssh  [email protected] -p 2222  "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"   含义: 用帐号密码登陆远端服务器 并执行后面双引号里面的命令 
 #   mkdir -p ~/.ssh    含义:创建一个.ssh文档,-p 表示如果没有就创建,如果有也不报错
 #  &&              含义:表示并且的意思,用于链接命令
 #   cat >> ~/.ssh/authorized_keys    含义: 把管道(|)传过来的内容追加(>>)到文件  ~/.ssh/authorized_keys  中。
 
 # 中间需要你提供远端帐号(hux)的密码:
The authenticity of host '10.18.19.128 (10.18.19.128)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:EX:AM:PL:E0:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
[email protected]'s password:
    
# 输入密码后,就追加成功了,你可以不用密码登陆了
  • 登陆到服务器,手动追加key到 ~/.ssh/authorized_keys file. 如果密码都没有,只有手动拷咯!
huxing@huxing:~/.ssh$ cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJRsBrBxLIf+WeIB3odcg+mFoGU3Bjxqt2i7PFFSUJ0IqHuBPJLy0JKc3JM1EEw+QowgvWJCxUrKOo7QeDHehBp8GSFC9OyNF11m18BXAWGgB/0xX0Ra5kos5oaU3fK+nbS2LWJinQ6tHwlTg3FvZWuHUbxdXQQ5CBpDr8i7qjYHqPevCFCrs+kA0NtPNo2OQbGMfacv+K2Wsxu5E0RpY64Dxw5DtY0gaaC7TBzQtZ64V5j/4/ch3Vb3oXCBg76ShT9xFh63EIoHPmVsNY/JVq/1x46NL3SYgMDYcwRtbm5i7lAvH04eBpN+49Oy9ZqxnoaKzDVRrJDet8qI1NPG51 huxing@huxing

# 将内容保存到一个文本
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJRsBrBxLIf+WeIB3odcg+mFoGU3Bjxqt2i7PFFSUJ0IqHuBPJLy0JKc3JM1EEw+QowgvWJCxUrKOo7QeDHehBp8GSFC9OyNF11m18BXAWGgB/0xX0Ra5kos5oaU3fK+nbS2LWJinQ6tHwlTg3FvZWuHUbxdXQQ5CBpDr8i7qjYHqPevCFCrs+kA0NtPNo2OQbGMfacv+K2Wsxu5E0RpY64Dxw5DtY0gaaC7TBzQtZ64V5j/4/ch3Vb3oXCBg76ShT9xFh63EIoHPmVsNY/JVq/1x46NL3SYgMDYcwRtbm5i7lAvH04eBpN+49Oy9ZqxnoaKzDVRrJDet8qI1NPG51 huxing@huxing

把文件弄到U盘或者硬盘里面, 然后在你要登陆主机的终端上登陆,打开文件,拷出内容.

 mkdir -p ~/.ssh
 vi      ~/.ssh/authorized_keys
# 输入i,把内容追加到后面,再按Esc键,输入 :x  保存并退出

一旦authorized_keys文件包含公钥,您需要更新某些文件的权限。该/.ssh目录和authorized_keys文件必须有(具体的权限限制700为/.ssh与600对authorized_keys)。如果他们不这样做,您将无法登录。
确保文件的权限和所有权正确无误。

# go=  狗等?什么意思,让狗等等我?哈哈。你猜对了
# 皮一下,g 是group的缩写,表示goup user,o是other的意思,表示other user。 那 go= 在这里表示移除 
chmod -R go= ~/.ssh
chown -R $USER:$USER ~/.ssh

还需要修改配置文件,禁用密码登陆,启用RSA登陆

#禁用密码验证
PasswordAuthentication no
#启用密钥验证
RSAAuthentication yes
PubkeyAuthentication yes


#接着重启ssh服务
service sshd restart #centos系统
service ssh restart #ubuntu系统
/etc/init.d/ssh restart #debian系统

猜你喜欢

转载自blog.csdn.net/fudaxing/article/details/86297657