SSH是远程登陆Linux系统的工具,Linux系统默认安装都包含SSH服务端,客户端能够经过命令:ssh 服务器IP地址(例:ssh 192.168.100.1)或者SSH客户端软件登陆到Linux服务器。可是,默认的SSH登陆方式要求用户输入服务器目标帐号的密码。为了不繁琐的密码输入,能够为SSH配置免密码登陆。具体配置以下:ubuntu
假设服务器IP地址:192.168.100.1;客户端IP地址:192.168.100.2。服务器
1. 服务器端执行命令:“james@ubuntu:~$ ssh-keygen -t rsa”,在这个过程当中会要求输入密码。为了配置无密码登陆,直接回车,过程以下:dom
james@ubuntu:~$ ssh-keygen -t rsassh
Generating public/private rsa key pair.ide
Enter file in which to save the key(/home/james/.ssh/id_rsa): 工具
Enter passphrase (empty for no passphrase):spa
Enter same passphrase again: server
Your identification has been saved in/home/james/.ssh/id_rsa.同步
Your public key has been saved in /home/james/.ssh/id_rsa.pub.it
The key fingerprint is:
c8:7d:5b:4f:00:51:1f:b5:3c:51:cf:8c:4b:14:82:53james@ubuntu
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
| o=E +++|
| o. +.=+|
| .. +++|
| . o o ..|
| o S . . o |
| . o o |
| . . |
| |
| |
+-----------------+
james@ubuntu:~$
2. 完成以上步骤以后,执行“cd ~/.ssh”切换到SSH目录,发现生成了新文件:
james@ubuntu:~$ cd ~/.ssh
james@ubuntu:~/.ssh$ ll
total 16
drwx------ 2 james james 4096 Sep 4 21:51 ./
drwxr-xr-x 20 james james 4096 Aug 30 13:14../
-rw------- 1 james james 1675 Sep 4 21:51id_rsa
-rw-r--r-- 1 james james 394 Sep 4 21:51 id_rsa.pub
james@ubuntu:~/.ssh$
3. 执行“james@ubuntu:~/.ssh$ scp id_rsa.pubjames@192.168.100.2:~/.ssh/authorized_keys”将服务器“~/.ssh”目录下的“id_rsa.pub”拷贝到客户端“~/.ssh”目录下的“authorized_keys”。
4. 执行“ssh james@192.168.100.2”登陆到客户端(192.168.0.2)的james帐号,此时配置还没有完成,仍然须要用户输入密码。登陆以后,同步骤1生成客户端的“id_rsa.pub”文件。
5. 执行“james@ubuntu:~/.ssh$ cat id_rsa.pub >> authorized_keys”,将“id_rsa.pub”文件添加到“authorized_keys”文末。完成这个步骤以后,服务器端公钥和客户端公钥都保存在客户端的“~/.ssh/ authorized_keys”文件中;而服务器的“~/.ssh/ authorized_keys”文件仅包含服务器本身的公钥。
6. 客户端执行“james@ubuntu:~/.ssh$ scp ~/.ssh/authorized_keysjames@192.168.100.1:~/.ssh/authorized_keys” ,用客户端“~/.ssh”目录下的“authorized_keys”替换服务器端的“~/.ssh”目录下的“authorized_keys”。
7. 至此,服务器(192.168.100.1)和客户端(192.168.100.2)之间的无密码登陆就完成了。
8. 服务器端使用命令:“ssh james@192.168.100.2”可无须输入密码,直接登陆到客户端。
9. Ubuntu 14可能会报“Error:Agent admitted failure to sign”错误,而且仍然要求用户输入密码才能登陆。解决方法是:分别在登陆服务器和客户端的帐号,执行“james@ubuntu:~/.ssh$ ssh-add”命令,以下所示:
james@ubuntu:~/.ssh$ ssh-add
Identity added:/home/james/.ssh/id_rsa (/home/james/.ssh/id_rsa)
james@ubuntu:~/.ssh$
10. 若是以为每次输入IP地址比较麻烦,能够执行“james@ubuntu:~/.ssh$ sudo vi /etc/hosts”配置“/etc/hosts”文件,内容以下:
127.0.0.1 localhost
127.0.1.1 ubuntu
192.168.100.1 server
192.168.100.2 client
客户端的“/etc/hosts”文件应该和服务器的“/etc/hosts”内容一致。
11. 之后服务器登陆客户端可使用“ssh james@client”代替“ssh 192.168.100.2”;客户端使用“ssh james@server”代替“ssh 192.168.100.1”登陆服务器了。