ubuntu版本是Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-66-generic x86_64),所有操作在一台机器上进行。
1. 安装:
sudo apt-get install openssh-server
2. 启动ssh服务:
sudo /etc/init.d/ssh start
3. 以账号密码ssh登录(不安全):
ssh root@localhost
通过以上命令以root身份登录会失败,第一是配置中默认不允许通过密码登录,另外是root密码由系统设置,需要先设置密码。root身份涉及到安全,一般强烈不建议这么做。但是我们为了研究一下,就是要用root身份登录怎么办?
1)修改登录配置。
sudo vim /etc/ssh/sshd_config
打开这个配置文件后,找到配置项PermitRootLogin,当前的设置是prohibit-password。
PermitRootLogin prohibit-password
我们修改一下,设置为允许root身份以密码登录。
PermitRootLogin yes
#PermitRootLogin prohibit-password (这行保留,仅仅只是注释掉)
修改完成后,重启ssh服务生效。
sudo /etc/init.d/ssh restart
2)修改root密码。
hhh:~$ sudo passwd
[sudo] password for hhh:
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
hhh:~$
按照以上命令成功修改后,就可以用root身份本地登录了。验证一下,用su命令后提示输入密码,成功登录后提示符从$变为#,说明进入root模式。通过exit可以退出root模式,退出后提示符又变回$。
hhh:~$ su
密码:
root@hhh:~# exit
exit
hhh:~$
3)以root身份ssh登录本机
hhh:~$ ssh root@localhost
root@localhost's password:
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-66-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
1 个可升级软件包。
0 个安全更新。
*** 需要重启系统 ***
Last login: Fri Apr 14 09:58:03 2017 from 127.0.0.1
root@hhh:~#exit
注销
Connection to localhost closed.
登录成功,试验完毕。为了回到安全状态,执行sudo vim /etc/ssh/sshd_config,将原来注释掉的PermitRootLogin prohibit-password
打开,新添加的yes选项注释掉或者删掉。
4. 以公钥认证ssh登录
1)在客户端生成密钥对。
hhh:~$ ssh-keygen -t rsa -C "hhh@le.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hhh/.ssh/id_rsa): /home/hhh/.ssh/ida_rsa_hhh
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hhh/.ssh/id_rsa_hhh.
Your public key has been saved in /home/hhh/.ssh/id_rsa_hhh.pub.
The key fingerprint is:
SHA256:zB/IVbBNJ4hcdYXEiBN4eZTmvjSp7M9M889lTS1K5ZQ hhh@le.com
The key's randomart image is:
+---[RSA 2048]----+
| . ++O*=+o.|
| + *==+o. |
| .o=. E |
| + o .+ .|
| S ....o o|
| . o=. o.|
| ..o+o +|
| o+.o o.|
| ...+ ..o|
+----[SHA256]-----+
密钥文件默认存放在当前用户目录下的.ssh目录下,公钥文件是id_rsa.pub,私钥文件是id_rsa。如果之前已经生成过密钥对,需要重新指定文件路径存放新的密钥对,如上所示,将文件路径重新指定为/home/hhh/.ssh/ida_rsa_hhh。
2)将公钥上传到对应服务端
需要将客户端生成的公钥上传到服务器,并且拷贝到对应用户的.ssh目录下。我们这里是本地登录,客户端用户账号和服务端要登录的账号是同一个账号,所以这一步就省略掉了。然后,将公钥放入到授权文件中。
cd ~/.ssh
cat id_rsa_hhh.pub >> authorized_keys
chmod 0600 authorized_keys(仅允许本用户读写,否则可能被修改)
3)尝试ssh登录普通账号并退出
ssh hhh@localhost
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-66-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
1 个可升级软件包。
0 个安全更新。
*** 需要重启系统 ***
Last login: Thu Apr 13 17:28:07 2017 from 127.0.0.1
hhh:~$ exit
注销
Connection to localhost closed.
5. 尝试ssh登录root账号
hhh:~$ ssh root@localhost
root@localhost's password:
Permission denied, please try again.
无法登录。这里要解决两个问题,一个配置成可以root登录,另一个是要配置公钥文件。
首先,修改配置文件。sudo vim /etc/ssh/sshd_config, 找到PermitRootLogin,将其后面no改为yes。
其次,类似普通用户的公钥文件配置,在/etc/ssh目录下做一个类似~/.ssh目录下的authorized_keys文件。此处,我们可以简单拷贝这个文件过来。sudo cp ~/.ssh/authorized_keys /etc/ssh/authorized_keys。这个authorized_keys里面如果存有多个公钥,将会带来安全隐患,所以要按需拷贝,此处只是为了省事,就直接把文件拷贝过来了。
再次试验,成功登录并退出。
hhh:~
$ ssh root@localhost
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-66-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
1 个可升级软件包。
0 个安全更新。
*** 需要重启系统 ***
Last login: Fri Apr 14 13:51:38 2017 from 127.0.0.1
root@hhh:~# exit
注销
Connection to localhost closed.
hhh:~$
试验结束,记得将原来的配置文件改回去并重启ssh服务。