`

ssh 配置及使用(ssh-keygen,ssh-copy-id,known_hosts)

阅读更多
一 核心命令
  1. 创建密钥对:ssh-keygen
  2. 转发密钥:ssh-copy-id -i ~/.ssh/id_rsa.pub puppet@Hadoop-NN-02
     常用密钥类型:
  1. ssh-keygen -t dsa 
  2. ssh-keygen -t rsa 
  3. ssh-keygen -t rsa1
二 原理
(一)基础
     1) 公钥:用于加密,存在于服务器
     2) 私钥:用于解密,存在于客户机
(二)流程
     1)客户端向服务器发出连接请求
     2)服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(客户机标志:用户@Host)对应的公钥
     3)服务器验证公钥合法,则产生一条随机数(challenge),用公钥加密发送给客户端
     4)客户端用私钥解密回传服务器端。
     5)随机数一致,认证通过。
三 样例
(一)ssh-keygen
[puppet@BigData-01 cdh4.4]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/puppet/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/puppet/.ssh/id_rsa.
Your public key has been saved in /home/puppet/.ssh/id_rsa.pub.
The key fingerprint is:
af:e2:f5:3a:e8:24:64:c1:f3:d9:bc:44:3d:9a:84:a0 puppet@BigData-01
The key's randomart image is:
+--[ RSA 2048]----+
|    .            |
|   o . . .       |
|  E + . o o      |
|     + * o .     |
|    o o S        |
|   o   . o       |
|    . ..o .      |
|     oo..o       |
|     oo.oo.      |
+-----------------+
 
注:
1)公钥( id_rsa.pub ): 
[puppet@BigData-01 .ssh]$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8CscWlgavdb76EVfhZadM4uMBzN8iVMEC0KuTHdGCzm

6LfMzLguf90uw+4ZKpYgxN4XSbbLbu1MPFLLqFxlo7oC2TOhhr84N1Zdm8jtfuh53IhNZDHKpvByUHS4ZZV

YVtAKt3+fZOEL700+p228JdQzkzfLHoaPvSD774igY+yB4d3pXkqk+fUALkE2H1hgbfJNjMoar5lls6KfdF6ocL

KBILj56Lt+b9KhVtPbllsP8TA8Vino9eF1TeCdKnRmxBFdYTBFlx8s1gRx2VHQnwVpUJcUuVPyGaxvPNXvL

HtPZPwi3xJmSFpPB9y8pzID1WqDKKAWkv7CcJqstIhBN3w==puppet@BigData-01
 
2)私钥(id_rsa):
[puppet@BigData-01 .ssh]$ cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQEA8CscWlgavdb76EVfhZadM4uMBzN8iVMEC0KuTHdGCzm6LfMz
Lguf90uw+4ZKpYgxN4XSbbLbu1MPFLLqFxlo7oC2TOhhr84N1Zdm8jtfuh53IhNZ
DHKpvByUHS4ZZVYVtAKt3+fZOEL700+p228JdQzkzfLHoaPvSD774igY+yB4d3pX
kqk+fUALkE2H1hgbfJNjMoar5lls6KfdF6ocLKBILj56Lt+b9KhVtPbllsP8TA8V
ino9eF1TeCdKnRmxBFdYTBFlx8s1gRx2VHQnwVpUJcUuVPyGaxvPNXvLHtPZPwi3
xJmSFpPB9y8pzID1WqDKKAWkv7CcJqstIhBN3wIBIwKCAQA9wfFZD1dVYyrVU6rZ
NVufikiUIy6m+Bb7lM275Cf0QgtNpO/nRNFc2PL+2WOm6IGvMQo5dyKPQT5kaIVW
ZZ6jurKIzgp9qgOOsedFmj0v2/K/npM9txW0B1lJVP83UKZ+vtxA49jFUw2OG8yX
gvPNpDrV31fnvHC6zl4G9F4x8eiW97O3CV+BBF2zdGFNgkliya7qyQFPjHsExnJE
Y+dp22lszjDKBCLHmVpg/x1BiM5vtWvdA0xzJNqTgo1q2Kw4iuL1RsWEz2DW6p01
kYFdmhy/gsC4SyhEjPGu6F0B8WpZJbmvPRrzVlxoet4yXJ4sU1kOG3hURuUzXAcn
iNV7AoGBAPrwBbYzV0G4HgJrifZM1BRe4gNvD1LCExhmoCvLuPAqlE9d1qWxNIuf
p1+he0Cnc87KZvnSchgzrV8v/u03drNsZc9XbxGoWGgg8SIpNSV3vQxeJTEKSVPU
QjeTbFF2yyx8oZPuIWZ6Ee1+KCj8SUFwiYItlrkRMDHL7wRIY0r5AoGBAPUDeHSz
9KXPZmPcqaVb15RkoQzdFFQLXOfhPNh63m8tfdCbDRbBYhdMyQhhYqTwdQqyyiLq
wm29y0zuEDdwyib08d1zq4ziE3E409Ra7LXdm0nCap4MOZX+Cs9PMoG87A8u1G4s
/FEGo8Jw8EthsxPoYV9uPPtKUERaHWJcX/2XAoGBAIENuctq3Grw+X2WZDWGmPSI
kX4b2/6s8+CpzrdwFffbYjdyFp5bIlZvXWRhrRnvt+axPEX3M1znYHoYrv2nft/u
msJnevMjYKqUmUTEvD8now2swquBog3a4DnWyf4ClGAFlOz+H85NaE5A4XQp+cni
GtU8BF8taT4uXapuXvNbAoGAdwGviSQ1ABRHrNjkr2cfkTgw956U2F1KYf+v1tyX
7NuU4aplcXPfL+N3llsv6bafP7XtJucN+snmZzHNXMHBRh8zphOcd6ECIQz5LKEx
JSJ+oCs7GZDoxTI/w8dhrLrZDrBYjUkM1uX3xNfFK+2gH5zBlMCEBQbWh5l7/JNE
kR0CgYA3ip6Mo+6iXLeXmsSwT+p3CGDdZe1SsQElLDDgOZvMEpy8wzZ1sIKYY0Oe
lsc23TrC+BHoJHaMKa9CHuZTwdQXGQuVam313WaGtD/3q6Inq6PosQj60v02jogx
rsfnG3WOSygeNS03PEflKpf6k5A0b3EZyZ5gatql/7I4D/3MPA==
-----END RSA PRIVATE KEY-----
(二)公钥上传服务器
[puppet@BigData-01 .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub puppet@Hadoop-NN-02
puppet@hadoop-nn-02's password:
Now try logging into the machine, with "ssh 'puppet@Hadoop-NN-02'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
注:
1)服务器公钥(authorized_keys ):
[puppet@BigData-02 .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8CscWlgavdb76EVfhZadM4uMBzN8iVMEC0KuTHdGCzm6

LfMzLguf90uw+4ZKpYgxN4XSbbLbu1MPFLLqFxlo7oC2TOhhr84N1Zdm8jtfuh53IhNZDHKpvByUHS4ZZVY

VtAKt3+fZOEL700+p228JdQzkzfLHoaPvSD774igY+yB4d3pXkqk+fUALkE2H1hgbfJNjMoar5lls6KfdF6ocLK

BILj56Lt+b9KhVtPbllsP8TA8Vino9eF1TeCdKnRmxBFdYTBFlx8s1gRx2VHQnwVpUJcUuVPyGaxvPNXvLHt

PZPwi3xJmSFpPB9y8pzID1WqDKKAWkv7CcJqstIhBN3w==puppet@BigData-01
 
四 客户端公钥记录文件(known_hosts)
     登陆到服务器时,比对服务器公钥与客户端记录是否一致,防止伪造的服务器。
(一)流程
     1)客户端登陆服务器
     2)客户端接收服务器公钥,查看~/.ssh/known_hosts查看是否记录,没有则提示用户选择是否记录
     3)服务器端公钥已记录则验证一致性,一致则进行验证,否则警告。
     警告样例:
[puppet@BigData-01 .ssh]# sshpuppet@BigData-02
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ <==警告有问题

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
a7:2e:58:51:9f:1b:02:64:56:ea:cb:9c:92:5e:79:f9.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:1 <==该数字为文件中有问题的行号
RSA host key for localhost has changed and you have requested strict checking.
Host key verification failed.
 
(二)公钥记录验证失败的解决方法 
删除known_hosts中对应的记录。
 
分享到:
评论

相关推荐

    SSH命令资料----常用

    - 或者使用 `sed -i 8d ~/.ssh/known_hosts` 删除特定行。 ##### 3.7 MySQL数据库迁移 - **使用 mysqldump 迁移 MySQL 数据库**: - 基本命令:`mysqldump -add-drop-table -extended-insert -force -log-error=...

    SSH-SCP使用方法

    2. **生成密钥**:在主机A上使用`ssh-keygen -t rsa`命令生成RSA类型的密钥对。此命令执行后,会提示保存密钥的位置,默认情况下保存在`/root/.ssh/id_rsa`,公钥保存在`/root/.ssh/id_rsa.pub`。 3. **密钥权限...

    Linux系统下如何做到SSH免密码登录

    可以使用`ssh-copy-id`命令简化此过程,例如:`ssh-copy-id user@remote_host`,这将把当前用户的公钥添加到`remote_host`的`authorized_keys`文件。 3. 配置known_hosts:每次将公钥复制到新服务器时,SSH客户端...

    第五节、SSH配置.pdf1

    使用 `ssh-copy-id` 命令完成此操作: ``` ssh-copy-id hadoopadmin@etc01 ssh-copy-id hadoopadmin@etc02 ssh-copy-id hadoopadmin@etc03 ``` ### 七、登录测试 现在,你应该能够在不输入密码的情况下,使用SSH...

    Linux服务器SSH自动登录

    #### 方法2:使用`ssh-copy-id`命令 ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub root@yourserver ``` ### 步骤3:测试SSH连接 完成上述步骤后,尝试从客户端SSH连接到服务器,如果一切顺利,你应该无需输入密码...

    ssh工程目录(有用) 2

    - **~/.ssh/known_hosts**:存储已知服务器的公钥,防止中间人攻击。 在"project2"这个压缩包中,可能包含以下内容: 1. **配置文件**:如`sshd_config`,这是SSH服务器的配置文件,可以设置端口、认证方法、权限等...

    Linux系统如何安装及配置ClusterShell工具以便了解负载情况.docx

    首先,运行 `ssh-keygen` 生成密钥对,然后使用 `ssh` 或 `ssh-copy-id` 命令将公钥复制到远程服务器: ```shell shell》 ssh-keygen shell》 cat ~/.ssh/id_rsa.pub | ssh &lt;USER&gt;@&lt;SERVER&gt; "cat &gt;&gt; ~/.ssh/...

    ssh学习ppt

    6. **SSH密钥管理**:`ssh-keygen`命令用于生成密钥对,`ssh-copy-id`命令方便地将公钥复制到远程服务器。`~/.ssh/known_hosts`文件存储已知主机的公钥,防止中间人攻击。 7. **SSH安全实践**:为了提高安全性,应...

    SSH基于口令验证和基于密钥难。

    客户端会将公钥指纹保存在其`.ssh/known_hosts`文件中。随后,客户端使用公钥对密码进行加密,并将加密后的密码发送给服务器。服务器使用其私钥对密码进行解密,如果密码正确,客户端就可以成功登录。 具体操作步骤...

    ssh权限管理

    4. 密钥管理:`ssh-keygen`命令用于生成密钥对,`ssh-copy-id`用于将公钥复制到远程服务器。`~/.ssh/known_hosts`文件存储已知主机的公钥,防止中间人攻击。 二、权限管理系统设计 1. 角色与权限:权限管理系统...

    SSH与SCP小指南.docx

    2. 使用 `ssh-copy-id` 命令将公钥复制到远程服务器上。 3. 修改远程服务器上的 `/etc/ssh/sshd_config` 文件,确保允许公钥登录。 4. 重启 SSH 服务使配置生效。 通过这种方式,用户在后续的连接过程中将不再需要...

    SSH远程登录和端口转发详解

    用户需谨慎判断是否接受,一旦接受,公钥会被保存在`~/.ssh/known_hosts`文件中,后续连接将不再提示。 **公钥登录** 公钥登录提供了无密码登录的选项,它依赖于一对密钥:公钥(public key)和私钥(private key...

    linux中ssh免密通信的实现

    3. 在执行`ssh-copy-id`时,系统可能会警告无法验证主机的真实性,这是因为它尚未在本地的known_hosts文件中记录远程主机的指纹。你可以根据提示输入`yes`继续,然后系统会自动将远程主机的指纹添加到已知主机列表中...

    Python如何使用paramiko模块连接linux

    2. **复制公钥**:使用 `ssh-copy-id` 命令将本地的公钥复制到远程服务器上的 authorized_keys 文件中。 3. **加载私钥**:使用 `paramiko.RSAKey.from_private_key_file()` 方法从本地文件加载私钥。 4. **建立连接...

Global site tag (gtag.js) - Google Analytics