澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

秘钥登入,CentOS多台服务器共用密钥ssh自动登录

2019-09-16 作者:澳门新萄京官方网站   |   浏览(94)

ssh-keygen介绍

采用数字签名RSA或者DSA实现两个linux机器之间使用ssh不需要用户名和密码,rsassh

为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。

模型分析

假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

要达到的目的:

A机器ssh登录B机器无需输入密码;

加密方式选 rsa|dsa均可以,默认dsa

ssh-keygen -t rsa #使用rsa加密

二、具体操作流程

单向登陆的操作过程(能满足上边的目的):

1、登录A机器

2、ssh-keygen -t[rsa|dsa],将会生成密钥文件和私钥文件id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

3、将 .pub 文件复制到B机器的 .ssh 目录,并 cat id_dsa.pub >> ~/.ssh/authorized_keys

4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行#ssh 192.168.20.60)

双向登陆的操作过程:

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:

2、两个节点都执行操作:#ssh-keygen -t rsa

然后全部回车,采用默认值.

3、这样生成了一对密钥,存放在用户目录的~/.ssh下。

将公钥考到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。

4、设置文件和目录权限:

设置authorized_keys权限

$ chmod 600 authorized_keys

设置.ssh目录权限

$ chmod 700 -R .ssh

5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

我从20.60去访问20.59的时候会提示如下错误:

Theauthenticityofhost'192.168.20.59(192.168.20.59)'can'tbeestablished.RSAkeyfingerprintis6a:37:c0:e1:09:a4:29:8d:68:d0:ca:21:20:94:be:18.Areyousureyouwanttocontinueconnecting(yes/no)yesWarning:Permanentlyadded'192.168.20.59'(RSA)[email protected]'spassword:Permissiondenied,[email protected]'spassword:Permissiondenied,[email protected]'spassword:Permissiondenied(publickey,gssapi-with-mic,password).

三、总结注意事项

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。我开始图省事就这么干了

2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys

3、linux之间的访问直接 ssh 机器ip

4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

ssh-keygen设置ssh无密码登录

ssh-keygen - 生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥

密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥

配置:

1、在本地机器中的~/.ssh/目录下执行下命令

ssh-keygen -t dsa

将生成两个文件,id_dsa和id_dsa.pub

2、将id_dsa.pub拷贝到远程机器,并且将id_dsa.pub的内容添加到~/.ssh/authorized_秘钥登入,CentOS多台服务器共用密钥ssh自动登录。keys中

cat id_dsa.pub >>authorized_keys

注意:目录.ssh和文件authorized_keys的权限必须是600

完成以上操作之后,用户从本地机器到远程机器就不需要用密码了

几个文件的作用说明,摘自

~/.ssh/identity

该用户默认的RSA1身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。

生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

ssh将在登录的时候读取这个文件。

~/.ssh/identity.pub

该用户默认的RSA1身份认证公钥(SSH-1)。此文件无需保密。

此文件的内容应该添加到所有RSA1目标主机的~/.ssh/authorized_keys文件中。

~/.ssh/id_dsa

该用户默认的DSA身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。

生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

ssh将在登录的时候读取这个文件。

~/.ssh/id_dsa.pub

该用户默认的DSA身份认证公钥(SSH-2)。此文件无需保密。

此文件的内容应该添加到所有DSA目标主机的~/.ssh/authorized_keys文件中。

~/.ssh/id_rsa

该用户默认的RSA身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。

生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

ssh将在登录的时候读取这个文件。

~/.ssh/id_rsa.pub

该用户默认的RSA身份认证公钥(SSH-2)。此文件无需保密。

此文件的内容应该添加到所有RSA目标主机的~/.ssh/authorized_keys文件中。

/etc/ssh/moduli

包含用于DH-GEX的Diffie-Hellmangroups

BG2BLT01 is on, BG2BLT02 is power off. They’re too noisy L

When and how to move them to data center

Please update SSH key in .33 server for git repo access.

ssh-keygen -t dsa

scp ~/.ssh/id_dsa.pub [YOUR_USER_NAME]@10.38.116.33:authorized_keys

ssh [YOUR_USER_NAME]@ 10.38.116.33

skip below 3 steps if you already have .ssh and .ssh/authorized_keys

mkdir -m 700 .ssh

touch .ssh/authorized_keys

chmod 600 .ssh/authorized_keys

cat authorized_keys >> .ssh/authorized_keys;exit

vi ~/.ssh/config

add lines and save quit

host 10.38.116.33

user [YOUR_USER_NAME]

为了让两个linux机器之间使用ssh不需要用户名和密码。所以...

    为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。


非对称加密简介:

最近在研究自动登陆的linux服务器的东西。本篇为关于ssh的秘钥自动登陆。

 

模型分析

对称加密算法在加密和解密时使用的是同一个秘钥;
而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是
公开密钥(public key,简称公钥)
私有密钥(private key,简称私钥)

update:2014.3.9 4:21 PM,昨晚写完这篇之后,发现IBM的网上有篇关于ssh认证的完整描述。伤心了。。

维基百科上关于ssh-keygen的介绍如下:

假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

常用的DES、三 重DES、AES等都属于对称加密;
        RSA, EI Gamal, ECC, Knapsack, etc都属于非对称加密;

 

要达到的目的:

       与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对。
       如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;
       如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
       因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

猜想:linux的秘钥产生与服务器无关,只和加密的方式(采用rsa或dsa)还有passphrase(密码短语,在生成秘钥的时候输入的)有关。

    ssh-keygen is a standard component of the Secure Shell (SSH) protocol suite found on Unix and Unix-like computer systems used to establish secure shell sessions between remote computers over insecure networks, through the use of various cryptographic techniques. The ssh-keygen utility is used to generate, manage, and convert authentication keys.

A机器ssh登录B机器无需输入密码;

 

如果是这样的话,同一对秘钥可以使用在多台服务器上,因为对于服务器和客户端来说,他们在通信的时候只需验证秘钥和公钥是否匹配。

 

加密方式选 rsa|dsa均可以,默认dsa

简单理解:
                加密             公钥加密——私钥解密                
数字证书**      私钥签名——公钥验证**

即存在一个global的公钥存放在ssh服务器上,而多台客户端则使用的同一秘钥登陆ssh服务器上。

    ssh-keygen is able to generate a key using one of three different digital signature algorithms.

ssh-keygen -t rsa #使用rsa加密

图片 1

测试环境:本机windows使用secureCRT客户端,两台redhat 6.3的虚拟机(linuxA和B,192.168.1.2/3)。虚机与主机使用桥接网络,处于同一局域网。

With the help of the ssh-keygen tool, a user can create passphrase keys for any of these key types (to provide for unattended operation, the passphrase can be left empty, at increased risk).

二、具体操作流程

 

测试过程:

These keys differ from keys used by the related tool GNU Privacy Guard.

单向登陆的操作过程(能满足上边的目的):

 

注:公钥一般是pub结尾,但是服务器验证的文件是authorized_key,所以要把pub文件的内容转入authorized_key。pub文件本身没用。

 

1、登录A机器


使用秘钥登录linux:

1、使用CRT生成秘钥对,将公钥上传到linuxA,成功登陆后,cpoyA机中的公钥至B机中,实现CRT自动登陆B机,验证公钥为通用。

  Oracle Solaris 11.2 Information Library (简体中文)手册中关于ssh-keygen的介绍如下: 

2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

一、在windows上使用 SSH Secure Shell Client   用密钥认证登录linux服务器

首先使用CRT生成秘钥:

 

3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys

      1.在SSH Secure Shell Client  上选择  Edit->settings->Keys

1.使用SecureCRT创建私钥和公钥(Set Passphrase 可以设置为空密码,比较方面验证)SecureCRT: Quick Connect -> Authentiation -> Public Key -> Properties -> Create Identity File -> DSA/RSA -> Set Passphrase -> Done这个时候在指定目录会生成两个文件,例如,私钥my_rsa和公钥my_rsa.pub2.linux服务器上建立.ssh目录,一般情况下,已经有这个目录(更改权限很重要,认证的时候权限不是700不给通过)# mkdir /root/.ssh# chmod 700 /root/.ssh3.将公钥 my_rsa.pub 传到linux服务器,将SSH2兼容格式的公钥转换成为Openssh兼容格式(一般情况是ssh2,不排除ssh1)# ssh-keygen -i -f Identity.pub >> /root/.ssh/authorized_keys2# chmod 600 /root/.ssh/authorized_keys24.在SecureCRT里面设置登录模式为PublicKey,并选择刚刚创建的my_rsa文件作为私钥5.重启Linux服务器上SSH服务器(测试貌似不用重启服务也能生效)

ssh-keygen主要用于为ssh(远程登录程序)生成、管理和转换验证密钥。ssh-keygen 可以创建供 SSH 协议版本 1 使用的 RSA 密钥,以及供 SSH 协议版本 2 使用的 RSA 或 DSA 密钥。生成的密钥类型使用–t选项指定。ssh-keygen 还可以生成指纹或从指定为 PKCS#11 URI 的 X.509v3 证书转换公钥。

4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )

     2. 点击“Generate New” 可选择 rsa dsa两种加密方式
     3. 输入生成Key的文件名和注释,打算使用空密码登录则Passphrase中不输入密码
     4. 完成

#service sshd restart 或者 /etc/rc.d/init.d/sshd restart

 

双向登陆的操作过程:

     5. 登录SSH Server,进入/root目录    
            再到Edit->Settings->key下,选择”upload”刚才的秘钥
           这样就把公钥上传到服务器了 z

此阶段,测试成功,A和B机使用的同一对authorized_keys2,CRT都能实现自动登陆。

通常,希望将 SSH 与 RSA 或 DSA 验证结合使用的每个用户应运行一次此实用程序,以便在 $HOME/.ssh/identity、$HOME/.ssh/id_dsa 或 $HOME/.ssh/id_rsa 中创建验证密钥。系统管理员还可以使用此实用程序生成主机密钥。

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:

     6. 因为SSH Server是Linux,而SSH Secure Shell Client客户端上Windows,所以密钥需要进行格式转换
         并把公钥追加到authorized_keys中
       cd $HOME/.ssh/
**
       ssh-keygen -i -f xxx.pub >> **authorized_keys

2、在B机中生成秘钥对,将公钥复制到A中,实现B机自动登陆A,然后将B的秘钥传过去,把A的authorized_keys2内容写入B的authorized_keys2文件中,实现A自动登陆B。

 

2、两个节点都执行操作:#ssh-keygen -t rsa

     7. 修改sshd_config
     sudo vi /etc/ssh/sshd_config
     让这几项生效:
     RSAAuthentication yes                         设置是否使用RSA算法进行安全验证
     PubkeyAuthentication yes                    
设置是否使用公钥进行安全验证
     AuthorizedKeysFile %h/.ssh/authorized_keys    
这里确定公钥的位置
     可选择关闭输入pasword认证:  
     PasswordAuthentication no

步骤1: 用 ssh-key-gen 在本地主机上创建公钥和密钥
local-host$ ssh-keygen -t rsa

通常,此程序会生成密钥并要求提供一个存储私钥的文件。公钥存储在附加了 ".pub" 扩展名的同名文件中。该程序还要求提供口令短语。口令短语可以为空,表示没有口令短语(主机密钥必须具有空口令短语),也可以为任意长度的字符串。好的口令短语长度在 10-30 个字符,不是简单的句子或其他容易猜到的句子,由大写字母、小写字母、数字和非字母数字字符组合而成。(普通英文句子中的每个字只有 1-2 位的熵,提供的口令短语非常差。)如果设置口令短语,则长度必须至少为 4 个字符,后面可以使用 –p选项更改口令短语。

然后全部回车,采用默认值.

     8. 重启sshd服务 sudo service sshd restart
     9. 连接即可,自己生成的keys在c:Users<username>AppDataRoamingSSHUserKeys中

Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Pess enter key]
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9
local-host

 

3、这样生成了一对密钥,存放在用户目录的~/.ssh下。

 

步骤2: 用 ssh-copy-id 把公钥复制到远程A主机上
local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
remote-host‘s password:
Now try logging into the machine, with ―ssh ?remote-host‘‖, and check in:
.ssh/authorized_keys to make sure we haven‘t added extra keys that you weren‘t expecting.
[注: ssh-copy-id 把密钥追加到远程主机的 .ssh/id_rsa 上.]

无法恢复丢失的口令短语。如果丢失或忘记口令短语,您必须生成一个新密钥并将相应的公钥复制到其他计算机。

将公钥考到对方机器的用户目录下 ,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys )。

 

步骤3: 直接登录A远程主机
local-host$ ssh [email protected]
Last login: Sat Mar 8 12:37:48 2014 from 192.168.1.3
[注: SSH 不会询问密码.]

 

4、设置文件和目录权限:

 

然后通过sftp,将B机的id_rsa传到A机,把A的authorized_keys2传过来。此时A和B都可互相自动登陆。

对于 RSA,密钥文件中还包含一个注释字段,该字段只是为了便于用户识别密钥。comment 字段可以说明密钥的用途或提供任何有用信息。创建密钥时,注释将初始化为 "user@host",但可以使用 –c 选项进行更改。

设置authorized_keys权限

 

测试结果:验证猜想成功,最好是有第三台linux再可以验证下就好了。

 

$ chmod 600 authorized_keys

二、服务器之间配置免密  秘钥登陆

补充安全问题:由于.ssh文件夹和privatekey都权限为700和600,同时sftp服务器只开通sftp登陆权限和控制home文件目录,只要妥善保管privatekey,在ssh协议下是没有安全顾虑的。参见SSH认证原理(

密钥生成后,可以使用下面的详细说明了解应将密钥放在何处,以便激活密钥。

设置.ssh目录权限

1.生成公钥私钥
                 $ ssh-keygen -t rsa -f ~/.ssh/id_rsa                    指定秘钥类型 目录 名字

本文出自 “hiubuntu” 博客,请务必保留此出处

 

$ chmod 700 -R .ssh

Generating public/private rsa key pair.

update:2014.3.9 4:21 PM,昨晚写完这篇之后,发现IBM的网上有篇关于...

当我们需要跨服务器实现免密码自动登陆,因此我们首先需要使用ssh-keygen生成登陆密钥。生成登陆密钥需要三个步骤,在本地机器创建密钥,复制公钥到远程主机,将公钥追加到远程主机的**authorized_keys**

5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

Created directory '/home/hadoop/.ssh'.

 

我从20.60去访问20.59的时候会提示如下错误:

Enter passphrase (empty for no passphrase): 

 

The authenticity of host '192.168.20.59 (192.168.20.59)' can't be established.  RSA key fingerprint is 6a:37:c0:e1:09:a4:29:8d:68:d0:ca:21:20:94:be:18.  Are you sure you want to continue connecting (yes/no)? yes  Warning: Permanently added '192.168.20.59' (RSA) to the list of known hosts.  root@192.168.20.59's password:  Permission denied, please try again.  root@192.168.20.59's password:  Permission denied, please try again.  root@192.168.20.59's password:  Permission denied (publickey,gssapi-with-mic,password).

Enter same passphrase again: 

 

三、总结注意事项

Your identification has been saved in /home/hadoop/.ssh/id_rsa.      私钥

 

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。我开始图省事就这么干了

Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.   公钥

1: 生成钥文件和私钥文件

2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys

The key fingerprint is:

** 

3、linux之间的访问直接 ssh 机器ip

38:95:cf:a6:78:37:ea:77:3a:20:a1:13:db:3f:2a:72 hadoop@master.hadoop

 

4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

The key's randomart image is:

ssh-keygen它支持RSA和DSA两种认证密钥,下面是的一些注意参数(可以使用 ssh-keygen /? 看看参数信息):

ssh-keygen设置ssh无密码登录

--[ RSA 2048]----

 

ssh-keygen - 生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥

|                 |

 

密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥

|         .       |

–b bits

 

指定要创建的密钥的位数。最小位数为 512 位。通常,2048 位足以满足安全需要。密钥大小超过该值并不会提高安全性,反而会降低速度。缺省值为 2048 位。

 

–B

显示指定的私钥或公钥文件的 bubblebabble 摘要。

 

–c

请求更改私钥和公钥文件中的注释。该程序会提示您提供包含私钥的文件、口令短语(如果密钥具有一个口令短语)以及新的注释。

此选项仅适用于 rsa1 (SSHv1) 密钥。

 

–C comment

提供新注释。

 

 

–e

 

此选项读取 OpenSSH 私钥或公钥文件并将密钥以 "SECSH" 公钥文件格式输出到 stdout。此选项允许导出密钥供其他一些 SSH 实现使用。

–f

 

指定密钥文件的文件名。

–F

 

在known_hosts 文件中搜索指定的 hostname,列出找到的任何匹配项。此选项可用于查找散列格式的主机名或地址,还可以与 –H 选项一起使用,以散列格式输出找到的密钥。

 

–H

 

对 known_hosts 文件执行散列计算。此选项使用散列形式替换指定文件内的所有主机名和地址。原始内容将移动到后缀为 .old 的文件中。这些散列值通常由 ssh 和 sshd 使用,即使文件内容被公开,这些散列值也并不会透露可识别的信息。此选项不会修改现有的散列主机名,因此可以放心地用于同时包含散列名称和非散列名称的文件。

 

–i

 

此选项以 SSH2 兼容格式读取未加密的私钥(或公钥)文件并将 OpenSSH 兼容的私钥(或公钥)输出到 stdout。ssh-keygen 还可读取 “SECSH” 公钥文件格式。此选项允许从其他一些 SSH 实现中导入密钥。

 

–l

 

显示指定的私钥或公钥文件的指纹。

 

–N new_passphrase

 

提供新口令短语。

 

–p

请求更改私钥文件的口令短语,而不创建新私钥。该程序会提示您提供包含私钥的文件、旧口令短语,并两次提示您输入新口令短语。

 

–P passphrase

提供(旧)口令短语。

 

–q

退出 ssh-keygen。

 

–t type

 

指定用于生成密钥的算法,其中 type 是 rsa、dsa 和 rsa1 中的一种。rsa1 类型仅用于 SSHv1 协议。

 

–R hostname

从 known_hosts 文件中删除属于 hostname 的所有密钥。此选项可用于删除散列主机。请参见 –H。

 

–x

已过时。已被 –e 选项取代。

 

–X

已过时。已被 –i 选项取代。

 

–y

此选项读取 OpenSSH 私钥格式文件并将 OpenSSH 公钥输出到 stdout。

配置:

|        o        |

 

1、在本地机器中的~/.ssh/目录下执行下命令

|    . .o o       |

 

ssh-keygen -t dsa

|     =o.S      |

判断.ssh目录是否存在,不存在则创建目录并赋予权限。目录存在即可跳过

将生成两个文件,id_dsa和id_dsa.pub

|     oo.o       |

 

2、将id_dsa.pub拷贝到远程机器,并且将id_dsa.pub的内容添加到~/.ssh/authorized_keys中

|     ..oo.o      |

 

cat id_dsa.pub >>authorized_keys

|  . E  .ooo..    |

.ssh目录存在

注意:目录.ssh和文件authorized_keys的权限必须是600

|   o ..ooo.     |

 

完成以上操作之后,用户从本地机器到远程机器就不需要用密码了

-----------------

$ ls -la ~/.ssh

total 12

drwx------  2 oracle oinstall 4096 May 20  2015 .

drwx------ 22 oracle oinstall 4096 Jul  3 13:36 ..

-rw-r--r--  1 oracle oinstall 1579 Dec  7  2017 known_hosts

几个文件的作用说明,摘自

2.将公钥拷贝到/home/hadoop/.ssh/authorized_key   中

 

~/.ssh/identity

      #cat /home/hadoop/.ssh/id_rsa.pub>>/home/hadoop/.ssh/authorized_key     设定权限

.ssh目录不存在

该用户默认的 RSA1 身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。

      #chmod 600 ~/.ssh/authorized_key 

 

生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

        
3.修改stricthostkeychecking  参数

$ ls -la ~/.ssh

ls: /home/oracle/.ssh: No such file or directory

$mkdir ~/.ssh 

$chmod 700 ~/.ssh

ssh将在登录的时候读取这个文件。

     StrictHostKeyChecking"如果设为"yes",ssh将不会自动把计算机的密匙加入"$HOME/.ssh/known_hosts"文件,且一旦计算机的密匙发生了变化,就拒绝连接。

 

~/.ssh/identity.pub

       可以修改全局变量  vi /etc/ssh/ssh_config
       在这里设置   StrictHostKeyChecking no

测试发现,其实执行下面命令生成ssh 密钥后,会在当前用户的主目录下创建.ssh目录。因此,上述步骤其实完全可以忽略

该用户默认的 RSA1 身份认证公钥(SSH-1)。此文件无需保密。

       也可以只修改用户的ssh环境
       新建  ~/.ssh/config  
      Host 0.0.0.0
      StrictHostKeyChecking no

 

此文件的内容应该添加到所有 RSA1 目标主机的 ~/.ssh/authorized_keys 文件中。

最后改下权限  

 

~/.ssh/id_dsa

    chmod 600 ~/.ssh/config  

[oracle@mylnx01 ~]$ ssh-keygen -t rsa

 

Generating public/private rsa key pair.

 

Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 

 

Enter passphrase (empty for no passphrase): 

 

Enter same passphrase again: 

 

Your identification has been saved in /home/oracle/.ssh/id_rsa.

 

Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.

 

The key fingerprint is:

 

ae:cb:6a:9c:60:72:bc:2c:27:dc:1f:06:e6:c8:1d:0c oracle@mylnx01.xxx.com

该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。

 

 

生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

 

上述可以按ENTER键后空格键跳过(口令短语可以为空),生成ssh 密钥后,可以到~/.ssh目录下查看相关文件,一般来说ssh 密钥会包含id_rsa和id_rsa.pub两个文件,分别表示生成的私钥和公钥。

ssh将在登录的时候读取这个文件。

总结注意事项

 

~/.ssh/id_dsa.pub

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。我开始图省事就这么干了

 

该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。

2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys

 

此文件的内容应该添加到所有 DSA 目标主机的 ~/.ssh/authorized_keys 文件中。

3、linux之间的访问直接 ssh 机器ip

 

~/.ssh/id_rsa

4、某个机器A生成自己的RSA或者DSA的数字签名,将公钥给目标机器B,然后B接收后设定相关权限(公钥和authorized_keys权限),这个B就能 被生成数字签名的机器A无密码访问了

2: 复制公钥到远程目标服务器

该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。

 

** 

生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

 

 

ssh将在登录的时候读取这个文件。

 

#复制公钥到远程服务器,例如,此处为服务器192.168.xxx.xxx

~/.ssh/id_rsa.pub

 

该用户默认的 RSA 身份认证公钥(SSH-2)。此文件无需保密。

[oracle@mylnx01 ~]$ scp ~/.ssh/id_rsa.pub 192.168.xxx.xxx:~/.ssh 

 

oracle@192.168.xxx.xxx's password: 

 

id_rsa.pub     

此文件的内容应该添加到所有 RSA 目标主机的 ~/.ssh/authorized_keys 文件中。

 

/etc/ssh/moduli

在复制密钥前,应该先去远程服务器(此处为mylnx02)执行下面操作。

包含用于 DH-GEX 的 Diffie-Hellman groups

 

BG2BLT01 is on, BG2BLT02 is power off. They’re too noisy L

 

When and how to move them to data center?

正确的操作步骤:

Please update SSH key in .33 server for Git repo access.

 

ssh-keygen -t dsa

1:验证目录是否存在

scp ~/.ssh/id_dsa.pub [YOUR_USER_NAME]@10.38.116.33:authorized_keys

 

ssh [YOUR_USER_NAME]@ 10.38.116.33

[oracle@mylnx02 ~]$  ls -la ~/.ssh

skip below 3 steps if you already have .ssh and .ssh/authorized_keys

ls: /home/oracle/.ssh: No such file or directory

mkdir -m 700 .ssh

 

touch .ssh/authorized_keys

2: 创建.ssh目录(如果目录已经存在可以忽略后续步骤)

chmod 600 .ssh/authorized_keys

 

cat authorized_keys >> .ssh/authorized_keys;exit

[oracle@mylnx02 ~]$ mkdir ~/.ssh

vi ~/.ssh/config

 

add lines and save quit

3:  设置目录权限

host 10.38.116.33

 

user [YOUR_USER_NAME]

[oracle@mylnx02 ~]$ chmod 700 ~/.ssh

 

4: 创建空文件authorized_keys

 

[oracle@mylnx02 ~]$ touch ~/.ssh/authorized_keys

 

5:  给文件authorized_keys授权

 

[oracle@mylnx02 ~]$ chmod 600 ~/.ssh/authorized_keys

 

6:  验证上述操作

 

[oracle@mylnx02 ~]$ ls -la ~/.ssh

total 8

drwx------  2 oracle oinstall 4096 Aug  1 07:20 .

drwx------ 11 oracle oinstall 4096 Aug  1 07:20 ..

-rw-------  1 oracle oinstall    0 Aug  1 07:20 authorized_keys

 

 

 

3:追加公钥到远程主机的authorized_keys

 

[oracle@mylnx02 ~]$  cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

 

 

注意事项:没有检查目标服务器是否存在.ssh目录(没有第二步骤检查路径,直接copy了文件),使用scp ~/.ssh/id_rsa.pub  192.168.xxx.xxx:~/.ssh 后,执行下面命令将会遇到下面错误

 

[oracle@mylnx02 ~]$  cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

 

-bash: /home/oracle/.ssh/authorized_keys: Not a directory

 

 

 

[oracle@mylnx02 ~]$ ls -la ~/.ssh

 

-rw-r--r-- 1 oracle oinstall 411 Aug  1 11:18 /home/oracle/.ssh

 

如果遇到上述错误,应该删除rm -rf ~/.ssh ,然后按照上述步骤操作,即可解决问题。

 

 

 

 

4: 测试验证结果

 

[oracle@mylnx02 ~]$ ssh 192.168.7.xxx  free -m

             total       used       free     shared    buffers     cached

Mem:         32237      32072        165          0        137      11493

-/  buffers/cache:      20441      11796

Swap:        12287          0      12287

[oracle@mylnx02 ~]$ ssh 192.168.7.222  date

Thu Aug  2 23:47:07 CST 2018

 

 

参考资料:

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:秘钥登入,CentOS多台服务器共用密钥ssh自动登录

关键词: