环境: Unbuntu 16.04 TLS Server
SSH 简介
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。
安装 openssh-server
1 | sudo apt-get install openssh-server |
启用 root 用户 SSH 登录
- 设置 root 密码
1 | sudo passwd root |
- 启用 root 登录
1 | vi /etc/ssh/sshd_config |
将 PermitRootLogin prohibit-password
修改为 PermitRootLogin yes
。
- 重启 ssh 服务
1 | sudo service ssh restart |
验证 root 用户 SSH 登录
在终端命令行输入以下命令,其中 server-host
为服务器地址。按照提示输入密码,登录成功即可。
1 | ssh root@server-host |
常见错误
ssh: connect to host 172.16.18.131 port 22: Connection refused
原因是Ubuntu没有默认提供ssh服务,因此首先安装ssh服务:
1 | sudo apt-get install openssh-server |
如果安装完后该服务没有自动启动,则手工启动:
1 | sudo /etc/init.d/ssh start |
Write failed Broken pipe 问题解决
问题
用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入 Terminal 时会有一段时间没有响应,然后就出现错误提示:
Write failed: Broken pipe
只能重新用 ssh 命令进行连接。
解决
- 如果你有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:
ServerAliveInterval 60
- 如果你有多个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:
ClientAliveInterval 60
- 如果您只想让当前的 ssh 保持连接,可以使用以下的命令:
$ ssh -o ServerAliveInterval=60 user@sshserver