SSH 无密码登录 Linux
2018-02-05 18:57
274 查看
SSH Key的知识
Linux系统有一个钥匙环(keyring)的管理程序.钥匙环受到用户登录密码的保护.当你登录Linux系统时,会自动解开钥匙环的密码,从而可访问钥匙环.SSH的密钥和公钥也存储在钥匙环.所以初次使用SSH密钥登录远程Linux服务器时需要输入一次SSH密钥的密码.而将来使用SSH密钥登录时不再输入密码.Ubuntu的钥匙环程序是seahorse.SSH密钥就好比是你的身份证明.远程Linux服务器用你生成的SSH公钥来加密一条消息,而只有你的SSH密钥可以解开这条消息.所以其他人如果没有你的SSH密钥,是无法解开加密消息的,从而也就无法登录你的Linux服务器.
SSH无密码登录的设置就是这么简单。
无密码登录Linux的设置步骤
SSH无密码登录Linux的设置步骤:1、首先我们在自己的Linux系统上生成一对SSH Key:SSH密钥和SSH公钥.密钥保存在自己的Linux系统上。
2、然后公钥上传到Linux服务器.之后我们就能无密码SSH登录了.SSH密钥就好比是你的身份证明
一、在自己的Linux系统上生成SSH密钥和公钥
打开终端,使用下面的ssh-keygen来生成RSA密钥和公钥.-t表示type,就是说要生成RSA加密的钥匙
cd .ssh ssh-keygen -t rsa
RSA也是默认的加密类型.所以你也可以只输入ssh-keygen.默认的RSA长度是2048位.如果你非常注重安全,那么可以指定4096位的长度。
ssh-keygen -b 4096 -t rsa
生成SSH Key的过程中会要求你指定一个文件来保存密钥,按Enter键使用默认的文件就行了.然后需要输入一个密码来加密你的SSH Key.密码至少要20位长度.SSH密钥会保存在home目录下的.ssh/id_rsa文件中.SSH公钥保存在.ssh/id_rsa.pub文件中。
Generating public/private rsa key pair. Enter file in which to save the key (/home/matrix/.ssh/id_rsa): 按Enter键 Enter passphrase (empty for no passphrase): 输入一个密码 Enter same passphrase again: 再次输入密码 Your identification has been saved in /home/matrix/.ssh/id_rsa. Your public key has been saved in /home/matrix/.ssh/id_rsa.pub. The key fingerprint is: e1:dc:ab:ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 matrix@vivid The key's randomart image is: +---[RSA 4096]----+ | .. | | . . | | . . .. . | | . . o o.. E .| | o S ..o ...| | = ..+...| | o . . .o .| | .o . | | .++o | +-----------------+
查看.ssh/id_rsa文件就会看到,这个文件是经过加密的(encrypted),也就是用你输入的密码来加密。
less .ssh/id_rsa
二、将SSH公钥上传到Linux服务器
可以使用ssh-copy-id命令来完成
ssh-copy-id username@remote-server
输入远程用户的密码后,SSH公钥就会自动上传了.SSH公钥保存在远程Linux服务器的.ssh/authorized_keys文件中。
上传完成后,SSH登录就不需要再次输入密码了.但是首次使用SSH Key登录时需要输入一次SSH密钥的加密密码。(只需要输入一次,将来会自动登录,不再需要输入密钥的密码.)
使用scp命令来传送文件时也不需要输入密码。
配置服务器别名
虽然经过上面的配置,我们不用在每次登录时都输入密码。当仍然需要我们输入用户名和服务器ip。有没有可能把这一步骤也省略呢?答案是肯定的,通过配置服务器别名的方式,登录时只需输入别名即可。一、打开~/.ssh/config文件,添加以下内容(如果木有 ~/.ssh/config 文件的话就自个儿建一个吧)
Host server-alias # server-alias为SSH链接的服务器别名 HostName server-ip # 服务器地址 Port 22 User username # 服务器端用户名 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa # 私钥地址,默认为 ~/.ssh/id_rsa
二、验证,以后即可通过以下命令登录远程服务器
ssh server-alias
常见问题及解决方案
一、生成密钥并上传至远程主机后,任然不可用 。1、打开服务器的 /etc/ssh/sshd_config 这个文件,取消注释
#AuthorizedKeysFile .ssh/authorized_keys
2、重启服务器的ssh服务。
#RHEL/CentOS系统 $ service sshd restart #ubuntu系统 $ service ssh restart #debian系统 $ /etc/init.d/ssh restart
3、执行ssh-copy-id 命令
ssh-copy-id 远程用户名@远程IP地址 //如果不是默认端口22,是9001 ssh-copy-id -p 9001 远程用户名@远程IP地址
二、ssh连接远程主机时,出现 sign_and_send_pubkey: signing failed: agent refused operation 错误,并且还是需要输入密码。
此时,表示ssh-agent 已经在运行了,但是找不到附加的任何keys,就是说你生成的key,没有附加到ssh-agent上,需要附加一下执行。
查看hosts中是否配置了git服务器的地址,那样的话,会一直让你输入密码
ssh-add //当然你也可以查看附加了哪些key ssh-add -l
ssh 远程用户名@远程IP地址 //如果不是默认端口22,是9001 ssh -p 9001 远程用户名@远程IP地址
如果显示下面的错误
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The ECDSA host key for [git.bbdservice.net]:51668 has changed, and the key for the corresponding IP address [10.10.80.26]:51668 is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is 6e:92:c8:d6:f2:45:ae:ff:5f:1d:21:8b:01:52:8a:82. Please contact your system administrator. Add correct host key in /home/glowd/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/glowd/.ssh/known_hosts:1 remove with: ssh-keygen -f "/home/glowd/.ssh/known_hosts" -R [git.bbdservice.net]:51668 ECDSA host key for [git.bbdservice.net]:51668 has changed and you have requested strict checking. Host key verification failed. fatal: Could not read from remote repository.
说明你连接的那一行访问,验证已经改变,/home/glowd/.ssh/known_hosts:1,删除那一行,或者直接把整个known_hosts文件删除,重新连接一次就好了
相关文章推荐
- Linux实现SSH无密码登录
- 不输入密码,ssh直接登录远程Linux主机
- 定制微型linux实现启用虚拟终端基于帐号密码登录、提供ssh服务,提供Web服务
- Linux A机器免密码SSH登录B机器
- Linux 打通ssh无密码登录
- Linux/UNIX下 ssh-keygen 设置SSH无密码登录
- ssh免密码登录 Linux环境(CentOS+hadoop-2.*)
- Linux:实现Hadoop集群Master无密码登录(SSH)各个子节点
- SSH免密码远程登录Linux
- linux 配置SSH无密码登录
- ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问
- 快速配置Linux下SSH无密码登录
- Linux下SSH免密码登录
- ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问
- linux下ssh面密码登录设置
- Linux SSH 客户端保存密码 自动登录服务端
- SSH实现两台Linux主机无需密码互相登录
- Linux下SSH免密码登录
- linux下设置ssh无密码登录
- linux主机间实现ssh/scp/rsync免密码登录