openssh的安装,配置和使用

只谈情不闲聊 提交于 2019-12-13 17:01:09

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

最近在学习用openssh找了很多资料,小有总结,以供大家借鉴

安装和设置 OpenSSH Server

Ubuntu下安装 OpenSSH Server 是无比轻松的一件事情,需要的命令只有一条:

sudo apt-get install openssh-server

随后,Ubuntu 会自动下载并安装 openssh server,并一并解决所有的依赖关系。当您完成这一操作后,您可以找另一台计算机,然后使用一个 SSH 客户端软件(强烈推荐 PuTTy),输入您服务器的 IP 地址。如果一切正常的话,等一会儿就可以连接上了。并且使用现有的用户名和密码应该就可以登录了。

事实上如果没什么特别需求,到这里 OpenSSH Server 就算安装好了。但是进一步设置一下,可以让 OpenSSH 登录时间更短,并且更加安全。这一切都是通过修改 openssh 的配置文件 sshd_config 实现的。

首先,您刚才实验远程登录的时候可能会发现,在输入完用户名后需要等很长一段时间才会提示输入密码。其实这是由于 sshd 需要反查客户端的 dns 信息导致的。我们可以通过禁用这个特性来大幅提高登录的速度。首先,打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config

找到 GSSAPI options 这一节,将下面两行注释掉:

 #GSSAPIAuthentication yes #GSSAPIDelegateCredentials no

然后重新启动 ssh 服务即可:

sudo /etc/init.d/ssh restart

再登录试试,应该非常快了吧 :)

利用 PuTTy 通过证书认证登录服务器

SSH 服务中,所有的内容都是加密传输的,安全性基本有保证。但是如果能使用证书认证的话,安全性将会更上一层楼,而且经过一定的设置,还能实现证书认证自动登录的效果。

首先修改 sshd_config 文件,开启证书认证选项:

 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys

修改完成后重新启动 ssh 服务。

下一步我们需要为 SSH 用户建立私钥和公钥。首先要登录到需要建立密钥的账户下,这里注意退出 root 用户,需要的话用 su 命令切换到其它用户下。然后运行:

用这个建立密钥,

http://www.zzbaike.com/wiki/index.php?title=PuTTY/PuttyGen%E4%BB%8B%E7%BB%8D&diff=prev&oldid=70114:


使用openssh

Protocol 2  #只支持SSH2协议
Port <
端口号>  #修改默认端口号
MaxStartups 5    #
同时允许5个尚未登录的SSH联机
MaxAuthTries 3 #
最大登录尝试次数为3

ServerKeyBits 1024 #
ServerKey强度改为1024比特
PermitEmptyPasswords no #
禁止空密码进行登录
ChallengeResponseAuthentication no #
禁用s/key密码
UsePAM no  #
不通过PAM验证
PermitRootLogin no #
禁止root远程登录
PasswordAuthentication no #
不允许密码方式的登录
RSAAuthentication no #
不允许RSA认证,只针对SSH1
PubkeyAuthentication yes #
允许公钥认证
AuthorizedKeysFile .ssh/authorized_keys #
保存公钥的认证文件
UsePrivilegeSeparation yes    #
用户权限设置

SyslogFacility AUTH    #
记录SSH登录情况
LogLevel INFO    #
记录等级为INFO

PrintMotd yes    #
登录成功后显示/etc/motd 文件的内容
PrintLastLog no    #
不显示上次登录信息
Compression yes  #
是否压缩命令
KeepAlive yes    #
防止死连接
StrictModes yes    #
接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查
UseDNS no  #
不使用DNS反解

AllowUsers <
用户名>  #允许通过远程访问的用户,多个用户以空格分隔
AllowGroups <
组名>  #允许通过远程访问的组,多个组以空格分隔
DenyUsers <
用户名>  #禁止通过远程访问的用户,多个用户以空格分隔
DenyGroups <
组名>  #禁止通过远程访问的组,多个组以空格分隔

2
、如果需要限制来路IP的话,可以修改/etc/hosts.deny/etc/hosts.allow两个文件,通过添加sshd:<IP地址或IP>来限制或允许SSH远程链接IP


二、基于密钥认证的客户端连接
通过命令ssh -i ~/.ssh/<PrivateKeyFileName> <username>@<remote IP>登录远程机。
ssh
客户端在登陆服务端时,会把对应的公钥写入~/.ssh/known_hosts文件。如果密钥发生改变,则将~/.ssh/known_hosts文件中对应的一行公钥删除,才能用新的私钥登录。

PUTTY:
将私钥文件id_rsa拷贝到客户端,通过PUTTYGEN转换RSA密钥,保存私钥为ppk格式,最后通过密钥认证即可登录远程系统。

SecureCRT:
将私钥文件id_rsa拷贝到客户端,在连接选项里把authentication的验证顺序中的PublicKey放到最先的位置,打开PublicKey验证的properties页,identity file选择id_rsa


三、scp的使用
scp <
源主机用户名>@<源主机名>:<源文件或目录路径,多个文件以空格分隔> <目标主机用户名>@<目标主机名>:<目标文件或目录路径>
如果源为本机的话,则只需要列出文件或目录路径即可。
常用参数 :
-v
显示进度
-C
压缩传输选项
-P
指定端口
-4
强行使用 IPV4 地址
-6
强行使用 IPV6 地址
-i
指定私钥文件路径
-r
遍历路径复制

-l 限制最大传输带宽,单位是Kb/s



都是别人的自己感觉有用裁剪组合了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!