ssh-keygen 命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。SSH 密钥默认保留在 ~/.ssh 目录中。如果没有 ~/.ssh 目录,ssh-keygen命令会使用正确的权限创建一个。
主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设公司、程序开发、微网站、小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站制作、网站建设、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。
执行完命令后,会有几个选项给你选择,一般来说直接回车,使用默认配置即可。需要注意的是, 如果本身服务器已经生成过ssh秘钥了,这一步可以省略
想知道秘钥曾经生成过,可以看步骤二。
正常来说,如果 ssh-keygen 命令执行成功,我们可以在目录中看到有 id_rsa (存放私钥)和 id_rsa.pub (存放公钥)两个文件
先简单介绍一下 ssh-copy-id 命令
ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。authorized_keys 文件用来验证 client 。使用 ssh-copy-id 命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。如果不传入 -i 参数, ssh-copy-id 使用默认 ~/.ssh/identity.pub 作为默认公钥。 如果多次运行 ssh-copy-id ,该命令不会检查重复,会在远程主机中多次写入 authorized_keys 。
注意,本地 ~/.ssh/id_rsa 的权限,chmod 400 ~/.ssh/id_rsa ,该文件包含用于授权的私钥, 如果该文件可以被其他用户访问,ssh 会忽略该私钥。
执行完上述命令后,我们后续就可以免密登录其他服务器了。
如果需要配置免密登录的服务器比较多,我们可以通过脚本来解决这些重复性的动作。
在CentOS/RHEL上设置SSH免密码登录
导读 作为系统管理员,你计划在 Linux 上使用 OpenSSH,完成日常工作的自动化,比如文件传输、备份数据库转储文件到另一台服务器等。为实现该目标,你需要从主机 A 能自动登录到主机 B。自动登录也就是说,要在 shell 脚本中使用ssh,而无需要输入任何密码。
本文会告诉你怎样在 CentOS/RHEL 上设置 SSH 免密码登录。自动登录配置好以后,你可以通过它使用 SSH (Secure Shell)和安全复制 (SCP)来移动文件。
SSH 是开源的,是用于远程登录的最为可靠的网络协议。系统管理员用它来执行命令,以及通过 SCP 协议在网络上向另一台电脑传输文件。
通过配置 SSH 免密码登录,你可以享受到如下的便利:
◆用脚本实现日常工作的自动化。
◆增强 Linux 服务器的安全性。这是防范虚拟专用服务器(VPS)遭受暴力破解攻击的一个推荐的方法,SSH 密钥单凭暴力破解 是几乎不可攻破的。
什么是 Ssh-Keygen
ssh-keygen 是一个用来生成、创建和管理 SSH 认证用的公私钥的工具。通过 ssh-keygen 命令,用户可以创建支持SSH1 和 SSH2 两个协议的密钥。ssh-keygen 为 SSH1 协议创建 RSA 密钥,SSH2 则可以是 RSA 或 DSA。
什么是 Ssh-Copy-Id
ssh-copy-id 是用来将本地公钥拷贝到远程的 authorized_keys 文件的脚本命令,它还会将身份标识文件追加到远程机器的 ~/.ssh/authorized_keys 文件中,并给远程主机的用户主目录适当的的权限。
SSH 密钥
SSH 密钥为登录 Linux 服务器提供了更好且安全的机制。运行 ssh-keygen 后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。
在 CentOS 和 RHEL 上设置免密码登录 SSH
以下步骤在 CentOS 5/6/7、RHEL 5/6/7 和 Oracle Linux 6/7 上测试通过。
节点1:192.168.0.9 节点2 : 192.168.0.10
本章目录结构 [收起]
步骤一 :
步骤二:
步骤三:
步骤四:
步骤一 :
测试节点1到节点2的连接和访问:
[root@node1 ~]# ssh root@192.168.0.10
The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established.
RSA key fingerprint is 6d:8f:63:9b:3b:63:e1:72:b3:06:a4:e4:f4:37:21:42.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.10' (RSA) to the list of known hosts.
root@192.168.0.10's password:
Last login: Thu Dec 10 22:04:55 2015 from 192.168.0.1
[root@node2 ~]#
步骤二:
使用 ssh-key-gen 命令生成公钥和私钥,这里要注意的是可以对私钥进行加密保护以增强安全性。
[root@node1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b4:51:7e:1e:52:61:cd:fb:b2:98:4b:ad:a1:8b:31:6d root@node1.ehowstuff.local
The key's randomart image is:
+--[ RSA 2048]----+
| . ++ |
| o o o |
| o o o . |
| . o + .. |
| S . . |
| . .. .|
| o E oo.o |
| = ooo. |
| . o.o. |
+-----------------+
步骤三:
用 ssh-copy-id 命令将公钥复制或上传到远程主机,并将身份标识文件追加到节点2的 ~/.ssh/authorized_keys 中:
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.10
root@192.168.0.10's password:
Now try logging into the machine, with "ssh '192.168.0.10'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
步骤四:
验证免密码 SSH 登录节点2:
[root@node1 ~]# ssh root@192.168.0.10
Last login: Sun Dec 13 14:03:20 2015 from
百度搜索《linux就该这么学》,技术干货里面有,也可以看下这本书!
SSH有两种登录方式, 一是口令登录, 即常规的用户名密码登录; 二是公钥登录, 只要在server端配置好client端的公钥, 就可以实现免密登录. 控制端为client端, 远程主机为server端, 下同.
在client端输入命令然后一路回车
运行结束以后,在client端~/.ssh/目录下,会新生成两个文件: id_rsa.pub 和 id_rsa 。前者是你的公钥,后者是你的私钥。这时再输入如下命令,将公钥传送到远程主机host上面:
server端将用户上传的公钥,保存在用户主目录的 ~/.ssh/authorized_keys 文件中。
原本以上配置就ok了,但是OpenWrt的ssh采用的是dropbear,一种轻量级的ssh服务。需要对其进行额外配置:
大功告成 -
SSH参考资料: SSH原理与运用(一):远程登录
sudo是以管理员权限进行操作,但是需要输入密码,如果想在用sudo时不用输入密码,需要修改 /etc/sudoers 文件。
首先需要备份一下 sudoers 文件,万一改崩了还有救。
使用 sudo visudo 命令打开, 如果失败了用 sudo vi /etc/sudoers
在最下面一行加上,下面的 username 需要改成自己的用户名:
如果要指定哪些操作不需要输入密码,需要在 NOPASSWD 后面加上指定命令:
保存退出之后,重新登录一次就可以了。
参考:
Linux 中不输入密码运行 sudo 命令的方法