Ubuntu 下 ssh 的安装与配置
2021-02-28 本文已影响0人
O无为学长O
本文章内容在 Ubuntu20.04 下测试通过,其它系统和版本请自行测试。
1. 安装与运行
sudo apt update # 更新源
sudo apt install openssh-server # 安装ssh服务
sudo service ssh start # 启动服务
sudo service ssh stop # 停止服务
sudo service ssh restart # 重启服务
2. SSH连接服务器
# 使用ssh登录远程服务器 -p port 指定端口 p为小写
ssh [-p port] (username)@(ip|host)
# 使用scp复制文件或文件夹到指定服务器
# -P port 指定端口 P为大写
# -p 保留原文件的修改时间,访问时间和访问权限,p为小写
# -r 递归复制整个目录
scp [-P port] [-r|-p] source1 (username)@(ip|host):(path)
3. 配置文件
/etc/ssh/ssh_config
选项 | 默认值 | 说明 |
---|---|---|
Host | * | 选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 |
ForwardAgent | no | 设置连接是否经过验证代理(如果存在)转发给远程计算机。 |
ForwardX11 | no | 设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAYset) |
RhostsAuthentication | no | 设置是否使用基于rhosts的安全验证 |
RhostsRSAAuthentication | no | 设置是否使用用RSA算法的基于rhosts的安全验证 |
RSAAuthentication | yes | 设置是否使用RSA算法进行安全验证 |
PasswordAuthentication | yes | 设置是否使用口令验证 |
FallBackToRsh | no | 设置如果用ssh连接出现错误是否自动使用rsh |
UseRsh | no | 设置是否在这台计算机上使用“rlogin/rsh” |
BatchMode | no | 如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用 |
CheckHostIP | yes | 设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes” |
StrictHostKeyChecking | no | 如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接 |
IdentityFile | ~/.ssh/identity | 设置从哪个文件读取用户的RSA安全验证标识 |
Port | 22 | 设置连接到远程主机的端口 |
Cipher | blowfish | 设置加密用的密码 |
EscapeChar | ~ | 设置escape字符 |
/etc/ssh/sshd_config
选项 | 默认值 | 说明 |
---|---|---|
Port | 22 | SSH预设使用22这个port,您也可以使用多的port! |
Protocol | 2,1 | 选择的SSH协议版本,可以是1也可以是2,如果要同时支持两者,就必须要使用2,1这个分隔了! |
ListenAddress | 0.0.0.0 | 监听的主机适配卡!举个例子来说,如果您有两个IP,分别是192.168.0.100及192.168.2.20,那么只想要开放192.168.0.100时,就可以写如同下面的样式: |
ListenAddress | 192.168.0.100 | 只监听来自192.168.0.100这个IP的SSH联机。如果不使用设定的话,则预设所有接口均接受SSH |
PidFile | /var/run/sshd.pid | 可以放置SSHD这个PID的档案!左列为默认值 |
LoginGraceTime | 600 | 当使用者连上SSHserver之后,会出现输入密码的画面,在该画面中,在多久时间内没有成功连上SSHserver,就断线!时间为秒! |
Compression | yes | 是否可以使用压缩指令? |
HostKey | /etc/ssh/ssh_host_key | SSHversion1使用的私钥 |
HostKey | /etc/ssh/ssh_host_rsa_key | SSHversion2使用的RSA私钥 |
HostKey | /etc/ssh/ssh_host_dsa_key | SSHversion2使用的DSA私钥 |
KeyRegenerationInterval | 3600 | 由前面联机的说明可以知道,version1会使用server的PublicKey,每隔一段时间来重新建立一次!时间为秒! |
ServerKeyBits | 768 | Serverkey的长度! |
SyslogFacility | AUTH | 当有人使用SSH登入系统的时候,SSH会记录信息 |
LogLevel | INFO | 登录记录的等级---》全部 |
PermitRootLogin | no | 是否允许root登入!预设是允许的,但是建议设定成no! |
UserLogin | no | 在SSH底下本来就不接受login这个程序的登入! |
StrictModes | yes | 当使用者的hostkey改变之后,Server就不接受联机 |
RSAAuthentication | yes | 是否使用纯的RSA认证!?仅针对version1! |
PubkeyAuthentication | yes | 是否允许PublicKey?只有version2 |
AuthorizedKeysFile | .ssh/authorized_keys | 设定若要使用不需要密码登入的账号时,那么那个账号的存放档案所在档名! |
RhostsAuthentication | no | 本机系统不使用.rhosts,.rhosts不安全! |
IgnoreRhosts | yes | 是否取消使用~/.ssh/.rhosts来做为认证! |
RhostsRSAAuthentication | no | 针对version1,使用rhosts档案在/etc/hosts.equiv配合RSA演算方式来进行认证! |
HostbasedAuthentication | no | 这个项目与上面的项目类似,不过是给version2使用的! |
IgnoreUserKnownHosts | no | 是否忽略家目录内的~/.ssh/known_hosts这个档案所记录的主机内容 |
PasswordAuthentication | yes | 密码验证当然是需要的! |
PermitEmptyPasswords | no | 上面那一项如果设定为yes的话,这一项就最好设定为no,这个项目在是否允许以空的密码登入! |
ChallengeResponseAuthentication | yes | 挑战任何的密码认证!所以,任何login.conf规定的认证方式,均可适用! |
PAMAuthenticationViaKbdInt | yes | 是否启用其它的PAM模块!启用这个模块将会导致PasswordAuthentication设定失效! |
KerberosAuthentication | no | - |
KerberosOrLocalPasswd | yes | - |
KerberosTicketCleanup | yes | - |
KerberosTgtPassing | no | - |
X11Forwarding | yes | - |
X11DisplayOffset | 10 | - |
X11UseLocalhost | yes | - |
PrintMotd | no | 登入后是否显示出一些信息呢?例如上次登入的时间、地点等,预设是yes,但是,如果为了安全,可以考虑改为no! |
PrintLastLog | yes | 显示上次登入的信息!预设也是yes |
KeepAlive | yes | 一般而言,如果设定这项目的话,那么SSHServer会传送KeepAlive的讯息给Client端,以确保两者的联机正常!在这个情况下,任何一端死掉后,SSH可以立刻知道!而不会有僵尸程序的发生! |
UsePrivilegeSeparation | yes | 使用者的权限设定项目! |
MaxStartups | 10 | 同时允许几个尚未登入的联机画面 |
DenyUsers | * | 设定受抵挡的使用者名称 |
AllowUsers | * | 设定允许的使用者名称 |
4. 问题排查
no route to host:
应该是防火墙没做好对应端口的配置,设置下防火墙就ok了。