如何创建密钥对,使用密钥登录服务器

在我们平时使用Linux系统时候,通常使用的Linux SSH登录方式是用户名加密码的登录方式,但是这种密码登录的方式很容易造成密码泄露或者被暴力破解,非常不安全,下面我们采用一种相对安全的登录方式---密钥登录;

我们知道SSH登录是用的RSA非对称加密的,所以我们在SSH登录的时候就可以使用RSA密钥登录,SSH有专门创建SSH密钥的工具ssh-keygen.

 

环境:A    机器为本地机器,    B   机器为服务器机器;

 实现:A  -------(免密登录)------>     B

 创建密钥对

首先登录 A 的用户目录(/root/)查看有没有.ssh目录,如果没有目录则创建目录;

执行命令:mkdir /root/.ssh

         

                                     如何创建密钥对,使用密钥登录服务器_第1张图片

 

接下来执行创建密钥对命令,ssh密钥的创建OpenSSL的支持,如果没有安装OpenSSL需要先安装OpenSSL,命令如下

执行命令:apt install openssl

执行命令: ssh-keygen  -t  rsa  -b 4096

                                    如何创建密钥对,使用密钥登录服务器_第2张图片

 

出现如上图形状,表明此时密钥已经创建好了,密钥生成后会在当前目录下多出两个文件,id_rsa和id_rsa.pub,其中id_rsa是私钥,id_rsa.pub这个是公钥;

                                                   

密钥创建好以后需要将公钥拷贝到 B 中的authorized_keys中,在 /root/.ssh目录创建一个文件;

执行命令:touch authorized_keys

将A中创建好的公钥(id_rsa.pub)文件拷贝到B机器(/root/.ssh目录)中:

     scp /root/.ssh/id_rsa.pub root@'B_ip':/root/.ssh/      # B_ip为B机器的ip地址

     cat  id_rsa.pub >> authorized_keys

至此,完成预期的目标了,A可以无密钥完美登录B机器;

注意:在执行拷贝的时候是>>而不是>,请将私钥拷贝到本地保存好,这将是你登录系统的唯一凭证

(个人理解,不管在哪里创建密钥,被登陆的服务器端,都需要创建.ssh/authorized文件需要将创建好的公钥拷贝进去即可;)

注意:

    如果添加秘钥后,ssh另一台机器仍需要输入密码才能登录;
    应当将文件的权限改为:.ssh文件夹的权限为700,authorized_keys文件的权限为600。

 

 修改登录权限

下面需要修改对应的sshd_config文件,这里面有四个需要注意的地方:

  1. PermitRootLogin yes  是否允许root账户登录,yes代表启用 ,no禁用;
  2. RSAAuthentication yes  使用rsa密钥默认开启
  3. PubkeyAuthentication yes  使用pubkey登录,默认开启
  4. PasswordAuthentication no   是否启用密码登录,yes代表启用,no是禁用

默认就按照上面操作即可,需要注意的是,4暂时开启,确保可以直接用密钥对进行登录后在进行设置;

 

(补充:)

其他 方式 实现无需要   互动操作  登录远程服务器的方法:

1,expect

#!/bin/bash
ip=x.x.x.x
user=root
password=xxx
expect <>test.log
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }                # 遇到yes/no反问句的时候,发送yes
"password" { send "$password\n" }                      # 当遇到输入密码的时候,将password变量值输入进去
}
expect "#" { send "cd /home/demoProject\n" }     # 登录到远程机器后在远程机器上执行命令
expect "#" { send "sh xx.sh $1\n" }                       
expect eof
EOF
echo "success!"                                                 #
exit 0

2、sshpass

这个需要安装下,apt-get install sshpass

实现方式:sshpass -p 'xxx' root@‘x.x.x.x’ 

3、通过   | (仅供参考(#^.^#))

例如:echo 'password' | root@'x.x.x.x'   

 

你可能感兴趣的:(y运维资料,密钥对,创建密钥,ssh登录,安全登录)