SSH免密码登陆设置实例教程

1SSH原理

SSH 为 Secure Shell 的缩写,安全Shell网络协议,用于计算机之间的加密登录,早期的计算机之间采用明文通信,通信信号被截获以后,内容即被截获一方掌握。1995年,芬兰学者Tatu Ylonen设计了SSH协议对登陆信息进行加密,称为互联网安全的标准解决方案。 有了加密措施,我们就可以确保通信的时候内容不会被第三方窃取。

SSH作为一种协议,有多重实现方案。目前Ubuntu的desktop系统会默认安装OpenSSH的client端,在Windows系统中,可通过开源软件PuTTY实现SSH通信。

2ssh安装

sudo apt-get install openssh-server

3ssh远程登录

SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条命令即可。可通过-p参数设定端口号(22是默认端口)。

ssh -p 22 user@host

在没有设置免密码登陆时,需要通过密码登陆。

如果你是第一次登录对方主机,系统会出现下面的提示:

The authenticity of host 'host (12.18.429.21)' can't be established.

RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.

Are you sure you want to continue connecting (yes/no)

提示无法确认host主机的真实性,只知道它的公钥指纹,还想继续连接吗?

所谓”公钥指纹”,是指对公钥(RSA算法公钥长度1024位)进行MD5计算,转换成128位的指纹,即

98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,容易进行比较。由于用户无法知道远程主机的公钥指纹,需要主机主动提供,才能进行必比对。

经过风险衡量以后,用户决定接受这个远程主机的公钥,则需输入yes。

系统会出现一句提示,表示host主机已经得到认可。

Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

提示输入密码。

Password: (enter password)

如果密码正确,就可以登录了。

当远程主机的公钥被接受以后,会在文件$HOME/.ssh/known_hosts中保存。下次再连接这台主机,系统认出公钥已经保存在本地,跳过警告部分,直接提示输入密码。

每个SSH用户都有自己的known_hosts文件,系统在/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机公钥。

4创建SSH key

如果经常输入密码会显得比较麻烦,可以通过让主机记录公钥来实现免密码登陆。这里首先要创建公钥。

命令为:

ssh-keygen -t [rsa|dsa] –C [Comments] -t = The type of the key to generate

密钥的类型,加密方式选 rsa|dsa均可以,默认dsa

-C = comment to identify the key 用于识别这个密钥的注释

命令实例为:

pi@raspberrypi:~/Desktop/LD_current $ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/pi/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/pi/.ssh/id_rsa.

Your public key has been saved in /home/pi/.ssh/id_rsa.pub.

The key fingerprint is:

74:cc:78:e7:4e:c0:8f:82:b6:30:15:53:21:66:be:3c pi@raspberrypi

The key's randomart image is:

+---[RSA 2048]----+

| *.o. |

| + + = |

| o o B . |

| o + o * |

| o E S . + |

| + o . o |

| . . |

| |

| |

+-----------------+

进入“.ssh”会生成以下几个文件

authorized_keys:存放远程免密登录公钥,通过该文件记录多台机器的公钥;

id_rsa:生成的私钥文件

id_rsa.pub:生成的公钥文件

know_hosts:已知的主机公钥清单

pi@raspberrypi:~ $ cd .ssh

pi@raspberrypi:~/.ssh $ ls

id_rsa id_rsa.pub known_hosts

如果希望ssh公钥生效需满足至少下面两个条件:

ssh目录的权限必须是700

ssh/authorized_keys文件权限必须是600

5拷贝公钥到远程主机

命令:ssh-copy-id -i ~/.ssh/id_rsa.pub

-i参数可采用默认项。

pi@raspberrypi:~/.ssh $ ssh-copy-id [email protected]

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"

and check to make sure that only the key(s) you wanted were added.

现在我们就可以不需要输入密码登录了。

pi@raspberrypi:~/.ssh $ ssh [email protected]

Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-29-generic x86_64)

* Documentation: https://help.ubuntu.com

* Management: https://landscape.canonical.com

* Support: https://ubuntu.com/advantage

1 个可升级软件包。

1 个安全更新。

Last login: Thu Aug 2 00:44:40 2018 from 192.168.1.107

git@wpr:~$

相关推荐