Ubuntu下安装OpenSSH服务器和客户端
OpenSSH
安装
1 2 |
sudo apt-get install openssh-client sudo apt-get install openssh-server |
服务器配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#监听端口 Port 22 #启用证书方式登录 PubkeyAuthentication yes #启用登录欢迎横幅 Banner /etc/issue.net # 允许root通过密码登录 PermitRootLogin yes #每隔60秒发送一次心跳给客户端 ClientAliveInterval 60 #如果连续5次心跳客户端没响应,则断开连接 ClientAliveCountMax 5 |
客户端配置
服务器可以发起保活心跳,客户端也可以:
1 2 |
ServerAliveInterval 60 ServerAliveCountMax 5 |
设置默认Identity
要修改当前用户的默认SSH Key的位置,使用配置文件:
1 |
IdentityFile /home/alex/Documents/puTTY/gmem.key |
免密码登录
1 2 3 4 5 |
#生成密钥,提示保存位置和保护密码时,根据需要输入 #默认情况下,私钥存放在:~/.ssh/id_dsa;公钥存放在:~/.ssh/id_dsa.pub ssh-keygen -t dsa #将公钥附加到SSH服务器上的~/.ssh/authorized_keys文件尾部,并修改权限 chmod 600 ~/.ssh/authorized_keys |
使用puTTY登录
先输入Session名称,然后点击Save,才能保存;加载时要先点击名称,然后Load:
小键盘功能默认是输入不了数字的,需要改为:
中文乱码问题的解决(设置编码方式与服务器一致,默认UTF-8):
免密码登录:点击右侧的按钮,上传上文介绍的私钥文件
也可以使用PuTTYgen.exe生成密钥对,并把公钥附到服务器的~/.ssh/authorized_keys文件中:
sshpass
该命令支持通过参数传递SSH密码。
安装
1 2 3 4 5 |
wget https://jaist.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz --no-check-certificate tar xzf sshpass-1.06.tar.gz cd sshpass-1.06 ./configure --prefix=/usr make && make install |
命令格式
1 2 3 4 |
sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments # 一键穿过堡垒机 sshpass -p passwd ssh -t root@bastion sshpass -p passwd ssh -t root@server ssh -t *** |
常见问题
无法分配伪终端
报错信息:Pseudo-terminal will not be allocated because stdin is not a terminal.
解决办法:使用
ssh -t参数。
unknown terminal type
报错信息:'screen-256color': unknown terminal type.
解决办法:使用环境变量 TERM=xterm-256color sshpass -p ...
AutoSSH
此工具能够监控SSH会话,当它失效、停止传输流量时,可以重启之。AutoSSH会创建一对端口转发,分别从本地到远程、远程到本地,并通过此端口转发来发送心跳数据。
SSH会话的退出状态影响AutoSSH的行为:
- 如果SSH会话正常退出,例如在交互式会话中输入exit命令,则AutoSSH不会重新连接
- 如果AutoSSH本身接收到SIGTERM、SIGINT、SIGKILL信号,则认为用户有意退出AutoSSH,不会重新连接
- 如果AutoSSH本身接收到SIGUSR1,则杀死并重启SSH进程
- 默认的,每10分钟AutoSSH通过监控的转发端口发送测试数据,如果失败,则杀死SSH进程并重新连接
- 如果SSH进程因为任何原因宕掉,自动重新创建
命令示例
1 2 3 4 5 6 7 8 |
# 命令格式 autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS] # 示例 # 监控端口22222/22223,分别用于发送、接收Echo信息 # -f后面的参数全部传递给SSH命令 /usr/bin/autossh -M 22222 -fnN -R localhost:2222:localhost:22 -i gmem.key root@bj.gmem.cc # 在服务器的2222端口反向转发给本机的22端口 |
环境变量
变量 | 说明 |
AUTOSSH_FIRST_POLL | 第一次执行发送测试数据的延迟 |
AUTOSSH_POLL | 发送测试数据的间隔,默认600秒。如果此变量小于网络超时(默认15秒)的2倍,则网络超时被调整为AUTOSSH_POLL / 2 |
AUTOSSH_PORT | 设置监控端口,覆盖-M参数 |
常见问题
SSH到当前机器本身极慢
可能是DNS的原因,可以修改配置:
1 |
UseDNS no |
Leave a Reply