- 创建密钥对:ssh-keygen
- 转发密钥:ssh-copy-id -i ~/.ssh/id_rsa.pub puppet@Hadoop-NN-02
常用密钥类型:
- ssh-keygen -t dsa
- ssh-keygen -t rsa
- 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中对应的记录。
相关推荐
- 或者使用 `sed -i 8d ~/.ssh/known_hosts` 删除特定行。 ##### 3.7 MySQL数据库迁移 - **使用 mysqldump 迁移 MySQL 数据库**: - 基本命令:`mysqldump -add-drop-table -extended-insert -force -log-error=...
2. **生成密钥**:在主机A上使用`ssh-keygen -t rsa`命令生成RSA类型的密钥对。此命令执行后,会提示保存密钥的位置,默认情况下保存在`/root/.ssh/id_rsa`,公钥保存在`/root/.ssh/id_rsa.pub`。 3. **密钥权限...
可以使用`ssh-copy-id`命令简化此过程,例如:`ssh-copy-id user@remote_host`,这将把当前用户的公钥添加到`remote_host`的`authorized_keys`文件。 3. 配置known_hosts:每次将公钥复制到新服务器时,SSH客户端...
使用 `ssh-copy-id` 命令完成此操作: ``` ssh-copy-id hadoopadmin@etc01 ssh-copy-id hadoopadmin@etc02 ssh-copy-id hadoopadmin@etc03 ``` ### 七、登录测试 现在,你应该能够在不输入密码的情况下,使用SSH...
#### 方法2:使用`ssh-copy-id`命令 ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub root@yourserver ``` ### 步骤3:测试SSH连接 完成上述步骤后,尝试从客户端SSH连接到服务器,如果一切顺利,你应该无需输入密码...
- **~/.ssh/known_hosts**:存储已知服务器的公钥,防止中间人攻击。 在"project2"这个压缩包中,可能包含以下内容: 1. **配置文件**:如`sshd_config`,这是SSH服务器的配置文件,可以设置端口、认证方法、权限等...
首先,运行 `ssh-keygen` 生成密钥对,然后使用 `ssh` 或 `ssh-copy-id` 命令将公钥复制到远程服务器: ```shell shell》 ssh-keygen shell》 cat ~/.ssh/id_rsa.pub | ssh <USER>@<SERVER> "cat >> ~/.ssh/...
6. **SSH密钥管理**:`ssh-keygen`命令用于生成密钥对,`ssh-copy-id`命令方便地将公钥复制到远程服务器。`~/.ssh/known_hosts`文件存储已知主机的公钥,防止中间人攻击。 7. **SSH安全实践**:为了提高安全性,应...
客户端会将公钥指纹保存在其`.ssh/known_hosts`文件中。随后,客户端使用公钥对密码进行加密,并将加密后的密码发送给服务器。服务器使用其私钥对密码进行解密,如果密码正确,客户端就可以成功登录。 具体操作步骤...
4. 密钥管理:`ssh-keygen`命令用于生成密钥对,`ssh-copy-id`用于将公钥复制到远程服务器。`~/.ssh/known_hosts`文件存储已知主机的公钥,防止中间人攻击。 二、权限管理系统设计 1. 角色与权限:权限管理系统...
2. 使用 `ssh-copy-id` 命令将公钥复制到远程服务器上。 3. 修改远程服务器上的 `/etc/ssh/sshd_config` 文件,确保允许公钥登录。 4. 重启 SSH 服务使配置生效。 通过这种方式,用户在后续的连接过程中将不再需要...
用户需谨慎判断是否接受,一旦接受,公钥会被保存在`~/.ssh/known_hosts`文件中,后续连接将不再提示。 **公钥登录** 公钥登录提供了无密码登录的选项,它依赖于一对密钥:公钥(public key)和私钥(private key...
3. 在执行`ssh-copy-id`时,系统可能会警告无法验证主机的真实性,这是因为它尚未在本地的known_hosts文件中记录远程主机的指纹。你可以根据提示输入`yes`继续,然后系统会自动将远程主机的指纹添加到已知主机列表中...
2. **复制公钥**:使用 `ssh-copy-id` 命令将本地的公钥复制到远程服务器上的 authorized_keys 文件中。 3. **加载私钥**:使用 `paramiko.RSAKey.from_private_key_file()` 方法从本地文件加载私钥。 4. **建立连接...