Ubuntu 1604 TLS Server 上的 openssh-server

环境: Unbuntu 16.04 TLS Server

SSH 简介

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。

安装 openssh-server

1
2
3
sudo apt-get install openssh-server

sudo /etc/init.d/ssh start

启用 root 用户 SSH 登录

  1. 设置 root 密码
1
sudo passwd root
  1. 启用 root 登录
1
vi /etc/ssh/sshd_config

PermitRootLogin prohibit-password 修改为 PermitRootLogin yes

  1. 重启 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

参考原文