与SSH相关的配置与记录

目录

本文将用到的命令

开启SSH服务sudo service ssh start
重启SSH服务sudo service ssh restart
运行SSH Daemon(Msys2)/usr/bin/sshd
运行SSH Daemon(Termux)sshd
运行SSH Daemon(Termux,调试模式)sshd -d

SSH连接自动断开问题解决

通过SSH建立远程连接后,若长时间没有通过SSH对远程计算机操作或进行数据交换, 在默认SSH配置的情况下,可能出现一段时间后自动断开连接的现象,错误提示如下。

  Write failed: Broken pipe

要解决此问题,可以通过变更SSH客户端或者服务器针对断开连接的时长设置。

变更SSH客户端设置

打开SSH客户端配置文件 /etc/ssh/ssh_config (针对所有用户) 或 ~/.ssh/config (针对当前用户), 按如下添加或修改当前设置。

  ServerAliveInterval 15
  ServerAliveCountMax 10

修改完成后重启SSH服务。 此时SSH客户端每15秒进行10次应答确认, 仍然没有应答的情况下才会断开连接。

变更SSH服务器设置

打开SSH服务器配置文件 /etc/ssh/sshd_config , 按如下添加或修改当前设置。

  ClientAliveInterval 30
  ClientAliveCountMax 5

修改完成后重启SSH服务。 此时SSH服务器每30秒进行5次应答确认, 仍然没有应答的情况下才会断开连接。

小提示

通过SSH远程连接进行工作时,使用tmux或screen等工具是不错的选择, 这样即使SSH连接意外断开,只要远程服务器仍正常运行, 便可在重新连接到远程服务器后挂载原有进程,快速恢复之前的工作环境。

在安卓平台上开启SSH服务

通过Google Play商店安装Termux应用。 安装完成后打开Termux,执行如下命令以安装openssh。

  apt install openssh

安装完成后通过执行如下命令创建密钥文件, 这里需要注意是权限应设置为只允许当前用户读写, 过于开放的权限设置会导致拒绝远程连接。

  ssh-keygen
  cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
  chmod 600 ~/.ssh/authorized_keys
  chmod 700 ~/.ssh

密钥文件创建完成后,在Termux中运行 sshd开启服务, 复制刚创建好的私有密钥文件 ~/.ssh/id_rsa 到希望作为SSH客户端的局域网内其他设备上, 便可在SSH客户端上通过执行如下命令, 以连接到安卓平台上已配置好的SSH服务。

  ssh ip.address -p 8022 -i /path_to/id_rsa

注意:包括复制到SSH客户端的 =id_rsa= 在内的全部密钥文件均需注意权限设定, 请参照上面SSH服务器的设置。

其他SSH相关的问题解决

no hostkeys

  • 错误信息

  sshd: no hostkeys available
  • 解决方案

  sudo ssh-keygen -A

could not open connection

  • 错误信息

  Could not open a connection to your authentication agent.
  • 解决方案

  eval "$(ssh-agent -s)" # for bash / zsh
  eval (ssh-agent -c)    # for fish

提高SSH服务器安全性

打开 /etc/ssh/sshd_config 配置文件, 按如下添加或修改当前设置。

  Port ????
  PasswordAuthentication no

其中端口号设置为 22 以外的其他数字,并禁用通过密码建立SSH连接。

编辑本页

Xin Li
Xin Li
讲师

主要研究方向为机器学习、深度学习与人工智能在各个领域的应用,特长为针对非均匀数据及偏移数据的优先采样及学习算法。了解更多

comments powered by Disqus
下一页
上一页

相关