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了。

上一篇 下一篇

猜你喜欢

热点阅读