美文网首页
Openssh之基础用法和最佳实践

Openssh之基础用法和最佳实践

作者: 六月天的安静 | 来源:发表于2017-07-20 21:25 被阅读189次

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcpftprloginrsh都是极为不安全的,并且会使用明文传送密码。

OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。

  • 客户端组件的使用:
  • ssh :配置文件 : /etc/ssh/ssh_config

ssh 格式:
ssh [user]@hostID [COMMAND]
ssh [ -l user host ] host [COMMAND]
-p :port,远程服务器监听的端口
-X:支持x11转发(图形界面)
-Y:支持信任的x11zhuanfa

  • 服务器端:
  • sshd:配置文件:/etc/ssh/sshd_config

常修改选项:
(1)port:例如修改为:22022
(2)ListenAddress:ip
(3)PermitRootLogin:yes
(4)UseDNS no
(5)限制可登入用户

基于密钥的认证:

1、(1) 在客户端生成密钥对
ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]

-p:指定密码
-f:指定生成密钥放在哪个目录下

这个命令会默认在当前用户的隐藏目录.ssh目录下生产一对密钥(公钥、私钥),一会儿我们需要把公钥发送到远程服务器上。

现在我们来查看一下是否生成了密匙对:


(2) 把公钥文件传输至远程服务器对应用户的家目录

格式:
ssh-copy-id [-i [identity_file]] [user@]machine
-i :指定要传哪个公钥文件
user:远程主机你要以什么身份运行,而不是本地主机的身份


(3) 测试:

总结:基于密钥的登入不需要密码,很方便。上面的远程登入是linux登录linux

2、另外我们使用windows客户端(xshell、securecrt)也可以实现,下面我们以xshell为例来进行说明:
(1)首先找到xshell菜单栏里的工具---->新建用户密匙生成向导


(2)密匙类型我们一般选择RSA,而密匙长度可以任意选择
Alt text
(3)这一步就会生成共钥对(私钥和公钥)

(4)密匙名称一般默认,至于需不需要给用户密匙加密码由你自己决定

(5)生成的公式一会儿需要在服务器上注册,在这里我选着复制一会儿直接粘贴到远程主机相对应的文件夹里

Alt text
(6)接下来在远程主机上编辑对应家目录下的文件:不过在此之前我们还需要检查一下是否(这里我们以远程主机上的root用户为例)root家目录下的.ssh是否已经存在authorized_keys,如果没有此文件,需要我们手工创建

(7)编辑此文件,把刚刚我们copy的公钥粘贴到上面


Alt text
然后保存退出

(8)接下来就是我们的测试阶段,现在我们在客户端链接远程主机:


下面这张图就表示我们已经连接到远程主机上了,接下来的事情就看你发挥了

接下来我们把其中我们用到的scp命令介绍简单一下:

scp:
跨主机的复制命令
格式:scp [options] SRC… DEST/

两种方式:
1、把别的主机的文件复制到本地 :
scp [options] [user@]host : /PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
注意:user是远程主机的用户

例如:把别的主机的fstab文件复制到本地的app目录下
scp root@192.168.220.164:/etc/fstab /app/

2、把本地主机的文件复制到别的主机上
scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE

例子:把本地的fstab文件复制到app目录下
scp /etc/fstab root@192.168.220.164:/app/

常用选项:

-C:压缩数据流
-r:递归复制
-p:保持原文件的属性信息
-q:静默模式
-P: PORT,指明远程主机(remote host)的监听的端口

ssh服务的最佳实践

服务器端:配置文件 /etc/ssh/sshd_config

** 方法: **
1、不要使用默认端口:

把配置文件的端口改用其它的端口号。一般修改端口之后必须重启服务,比如把上面配置文件修改端口为22022,(centos7)用命令:systemctl restart sshd.service,接下来就可以用命令ss -ntl查看一下端口情况,此时需要注意Selinux关掉没有(getenforce查看一下Selinux的状态,如果是Enforcing状态,那么就用命令setenforce 0关掉)用命systemctl status sshd.service可以查看服务的状态。

2、进制使用protocol version 1

编辑配置文件注释即可

3、限制可登入用户

限制可登入用户的办法:
1、白名单:
(1)AllowUsers user1 user2 user3...
(2)AllowGroups group1 group2 group3...
2、黑名单:
(1)DenyUsers
(2)DenyGroups
** 下面我来举个例子怎样限制用户的登入 **
第一步:首先编辑文件/etc/ssh/sshd_config用命令vim /etc/ssh/sshd_config


第二步:重置一下这个服务:systemctl reload sshd.service
第三步:我们用另外一个主机来连接这台主机(由于xiaoming没在白名单内会拒绝xiaoming登入)

现在我们再来用xiaohong登入(xiaohong在白名单里面,因此可以登入)

另外连接这台主机的其它主机都会记录在/var/log/secure
Alt text

4、设定空闲会话超时时长
5、利用防火墙设置ssh访问策略
**6、仅监听特定的IP地址 **
7、基于口令认证时,使用强密码策略

可以使用随机数生成密码:tr -dc A-Za-z0-9 < /dev/urandom | head -c 30 | xargs

**8、尽可能使用基于密钥的认证 **
**9、禁止使用空密码 **
**10、进制root用户直接登入 **
**11、限制ssh的访问频度和并发在线数 **
12、做好日志,经常分析

相关文章

网友评论

      本文标题:Openssh之基础用法和最佳实践

      本文链接:https://www.haomeiwen.com/subject/ifbjkxtx.html