未加星标

Linux ssh安全远程登录

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二03 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

linux ssh 安全远程登录

本章内容:

构建 SSH 远程登录系统

SSH ( secure shell )是标准的网络协议,主要用于实现字符界面的远程登录管理,及远程文件复制功能。 SSH 协议对通过网络传输的数据进行了加密处理,其中包括了用户登录时输入的用户口令。与早期的 Telnet (远程登录)、 rsh (远程执行命令)、 rcp (远程文件复制)等应用相比, SSH 协议提供了更好的安全性, SSH 协议监听的端口: tcp22 。

SSH 协议支持两种方式的用户登录认证:

( 1 )基于密码验证的 SSH 登录体系

( 2 )基于密钥对儿验证的 SSH 登录体系

openssh :

client/server :客户端 / 服务器

client :客户端软件有 ssh 、 scp 、 sftp

server :服务器软件有 sshd

windows 上的远程客户端有: xshell securecrt putty sshsecureshellclinet

ssh 服务器:

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

常用参数:

Port #### // 监听端口

AddressFamily any // 监听地址

PasswordAuthentication yes |no // 是否允许密码验证登录

protocol // 协议

LoginGraceTime 2m // 登录等待超时时间

PermitRootLogin yes |no // 是否允许 root 登录

MaxAuthTries 6 // 尝试错误密码输入次数(一半)

MaxSessions 10 // 每个网络连接尝试最大会话次数

AuthorizedKeysFile .ssh/authorized_keys //key 验证默认公钥存放路径

ClientAliveInterval 0 // 用户连接上 sshd 服务多久不活动就断开连接

UseDNS yes |no // 是否使用 DNS

#no default banner path // 登录 sshd 服务时的提示标语

Banner /etc/ssh.txt // 登录 sshd 服务时的提示标语

限制可登录用户的办法:

AllowUsers zheng mage // 如果此处没有添加 root 用户,那么 root 也就拒绝

DenyUsers zhangsan lisi // 拒绝登录 sshd 服务的用户,拒绝优先

AllowGroup // 允许那些组内用户登录

DenyGroup // 拒绝哪些组内用户登录

ssh 服务的最佳实践:

1 、不要使用默认端口

2 、禁止使用 protocol version 1

3 、限制可登录用户

4 、设定空闲会话超时时长

5 、利用防火墙设置 ssh 访问策略

6 、仅监听特定的 IP 地址

7 、基于口令认证时,使用强密码 celv

例: tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs

8、 使用基于密钥的认证

9、 禁止 root 用户直接登录

10、 禁止使用空密码

11、 限制 ssh 的访问频率和并发在线数

12、 做好日志,经常分析

ssh 客户端:

ssh 客户端主配置文件: /etc/ssh/ssh_config

命令行客户端工具:

1) ssh 远程登录:使用 ssh 命令远程登录服务器时,最典型的命令格式如下。

ssh [email protected] [command]

或者简写为:

ssh ip address

ssh 支持的选项:

-p : port 远端服务器监听的端口

-b :指定连接的源 ip

-v :调试模式

-c :压缩方式

-X :支持 x11 转发

-y :支持信任 x11 转发 forward x11 trusted yes

-t :强制伪 tty 分配

ssh -t remoteserver1 ssh remoteserver2

-l :直接以谁的身份登录 sshd 服务器

ssh -l zheng 192.168.3.2 (必须指定用户名)

命令格式中 sshserver 表示需要登录到的 SSH 服务器的地址,可以是主机名或者 IP 地址,而 username 表示用于登录的用户账号,该账号应该是 SSH 服务器中的系统用户账号。用户名与服务器地址之间使用“ @ ”符号进行分隔。

当客户端第一次使用 ssh 客户端命名连接 sshd 服务器时,在你输入 yes 的时候,客户机会自动复制 sshd 服务器 /etc/ssh/ssh_host_rsa_key.pub 中的公钥到自己家目录 ./.ssh/known_hosts 文件中。下次再连接时, sshd 服务器就会发一个私钥签名数据给 ssh 客户端,如果 ssh 客户端能解开则证明是原来连接过的 sshd 服务器,否则客户端则会报警提示。( WARNING REMOTE HOST IDENTIFICATION CHANGED! )远程主机标识发生改变。

修改 sshd 服务器的监听端口号:

[[email protected] ssh]# vim /etc/ssh/sshd_config
Linux ssh安全远程登录
[[email protected] ssh]# systemctl reload sshd // 重新加载服务

如果 selinux 是开启状态,还需执行:

[[email protected] ssh]# semanage port -a -t ssh_port_t -p tcp 2222

使用 centos6 客户机测试:

[[email protected] ssh]# ssh 192.168.3.11 -p 2222

若不想每次 ssh 连接时都输入指定的端口号 2222 ,我们这是就可以更改客户端( centos6 )的配置文件。

[[email protected] ssh]# vim /etc/ssh/ssh_config
Linux ssh安全远程登录

客户端改完配置文件无需重启服务。

使用 centos6 客户机测试:

[[email protected] ssh]# ssh 192.168.3.11

基于 key 验证远程登录 openssh 服务器:

在客户端创建密钥对:

在客户端使用 ssh-keygen 命令工具为当前用户创建密钥对文件,可以使用的加密算法为 rsa 或 dsa ( ssh-keygen 命令的 -t 选项用于指定算法类型), ssh-keygen 命令执行完毕后将密钥文件保存到用户指定的位置,默认位于用户宿主目录下的 .ssh/ 目录下。其中 id_rsa.pub 是用户的公钥文件,可以提供给 ssh 服务器; id_rsa 是用户的私钥文件,权限默认为 600 ,私钥文件用妥善保管,不能泄露给他人。用户可以在创建密钥对儿的过程中设置一个私钥密码短语或( ssh-keygen -P “ PASSWD ” )直接指定。

( 1 )在客户端生成密钥对儿;

ssh-keygen -t rsa|dsa -P PASSWD

或者写成:

( 2 ) ssh-keygen (私钥保护密码在创建的过程中填写,默认为 rsa 加密算法)

( 3 )给私钥保护密码设置密码代理;

* 这样口令就只需要输入一次;

* 需先执行 ssh-agent bash 启动密码代理服务;

* 在使用 ssh-add 命令把私钥保护密码托管给密码代理服务;

* 如果客户机重启还需重新设置私钥保护密码托管。

上传公钥文件给服务器:

将客户端用户创建的公钥文件发送给 openssh 服务器,并保存到服务器的授权密钥库中。服务器的授权密钥库文件位于各用户宿主目录下的 .ssh/ 目录,默认的文件名是 authorized_keys 。

( 1 )拷贝公钥文件到远程服务器上;

ssh-copy-id -i ( public_file 绝对路径) [user@]host 测试基于 key 验证远程登录

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

分页:12
转载请注明
本文标题:Linux ssh安全远程登录
本站链接:http://www.codesec.net/view/481005.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(30)