与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连接。