Linux系统之ssh命令
ssh命令用于远程登录上Linux主机。
常用格式:ssh [-l login_name] [-p port] [user@]hostname
更详细的可以用ssh -h查看。
不指定用户:
ssh 192.168.0.11
指定用户:
ssh -l root 192.168.0.11
ssh root@192.168.0.11
如果修改过ssh登录端口的可以:
ssh -p 12333 192.168.0.11
ssh -l root -p 12333 216.230.230.114
ssh -p 12333 root@216.230.230.114
另外修改配置文件/etc/ssh/sshd_config,可以改ssh登录端口和禁止root登录。改端口可以防止被端口扫描。
编辑配置文件:
vim /etc/ssh/sshd_config
找到#Port 22,去掉注释,修改成一个五位的端口:
Port 12333
找到#PermitRootLogin yes,去掉注释,修改为:
PermitRootLogin no
重启sshd服务:
service sshd restart
默认配置文件和SSH端口
/etc/ssh/sshd_config:OpenSSH服务器配置文件;
/etc/ssh/ssh_config:OpenSSH客户端配置文件;
~/.ssh/:用户SSH配置目录;
~/.ssh/authorized_keys:用户公钥(RSA或DSA);
/etc/nologin:如果存在这个文件,sshd会拒绝除root用户外的其它用户登录;
/etc/hosts.allow和/etc/hosts.deny:定义tcp-wrapper执行的访问控制列表;
SSH默认端口:22
1、禁用OpenSSH服务器
工作站和笔记本电脑可以不用OpenSSH服务器,如果你不需要提供SSH远程登录和文件传输功能,可以禁用并删除SSHD服务器,CentOS / RHEL / Fedora Linux用户可以使用下面的yum命令禁用和删除openssh-server:
# chkconfig sshd off
# yum erase openssh-server
Debian / Ubuntu Linux用户可以使用下面的apt-get命令禁用和删除openssh-server:
# apt-get remove openssh-server
你可能需要更新你的iptables脚本,移除ssh例外规则,在CentOS / RHEL /
Fedora下,打开etc/sysconfig/iptables和/etc/sysconfig/ip6tables文件,删掉与ssh相关的例外规则,然后使用下面的命令重启iptables:# service iptables restart
# service ip6tables restart
2、只使用SSH v2
打开sshd_config配置文件,如果没有就增加下面这一行设置:Protocol 2
3、限制用户的SSH访问
假设我们只要root,vivek和jerry用户能通过SSH使用系统,向sshd_config配置文件中添加:AllowUsers root vivek jerry
另外,你还可以允许所有用户通过SSH登录,但拒绝一部分用户,这时就需要向sshd_config配置文件中添加:DenyUsers saroj anjali foo
4、配置空闲超时退出时间间隔
sshd_config配置文件,确保有如下的配置项:
ClientAliveInterval 300
ClientAliveCountMax 0
上面的例子设置的空闲超时时间间隔是300秒,即5分钟,过了这个时间后,空闲用户将被自动踢出出去(可以理解为退出登录/注销)。
5、禁用.rhosts文件
不要读取用户的~/.rhosts和~/.shosts文件,使用下面的设置更新sshd_config配置文件:
IgnoreRhosts yes
6、禁用基于主机的身份验证
HostbasedAuthentication no
7、禁用root通过SSH登录
PermitRootLogin no
8、启用警告横幅
Banner /etc/issue
8、防火墙SSH端口:22
更新/etc/sysconfig/iptables(Red Hat及基于Red Hat的系统)文件,只接受来自192.168.1.0/24和202.54.1.5/29的连接,配置如下:
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -
9、使用TCP Wrapper
TCP Wrapper是一个基于主机的网络ACL系统,用于过滤到互联网的网络访问,OpenSSH支持TCP
Wrapper,只需要更新你的/etc/hosts.allow文件,下面的例子表示仅允许来自192.168.1.2
和172.16.23.12的ssh访问:
192.168.1.2 172.16.23.12 |
关于如何在Linux / Mac OS X 和UNIX类操作系统上安装和配置TCP Wrapper,请访问http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/。
10、禁用空密码
你需要明确禁止密码为空的用户远程登录,使用下面的设置更新sshd_config配置文件:
|
PermitEmptyPasswords no |
11、使用日志分析器
使用logwatch或logcheck读取你的日志,这些工具让你更容易阅读日志内容,它们可以遍历给定时间范围内的日志,并生成明了的报告,请确保sshd_config配置文件中将LogLevel设置为INFO或DEBUG了。
LogLevel INFO |
Other
# 开启特权隔离
UsePrivilegeSeparation yes
# 防止使用不安全的home目录和密钥权限
StrictModes yes
# 开启反向名称检查
VerifyReverseMapping yes
# 设置是否需要端口转发
AllowTcpForwarding no
X11Forwarding no
# 指定是否允许密码验证,默认是yes
PasswordAuthentication no
最后警告大家,在重启或重新载入修改之前,先使用下面的命令验证一下sshd_config配置文件是否无误:
# /usr/sbin/sshd -t
Linux系统之ssh命令的更多相关文章
- Linux系统下ssh的相关配置详细解析
Linux系统下ssh的相关配置进行了详细的分析介绍. ssh是大家常用的登录linux服务器的方式,但是为了安全考虑,有时候我们需要针对ssh做一些特殊处理,本文记录笔者曾经做过的一些修改,供大家参 ...
- [r]Ubuntu Linux系统下apt-get命令详解
Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...
- Linux系统下RPM命令和yum的使用
Linux系统下RPM命令和yum的使用 RPM:Redhat Packages Manager (红帽系列软件包的管理),主要用于安装.卸载.升级和管理软件. 一个包由下面几个部分构成: 例如:ht ...
- Linux系统使用ss命令查看端口状态
Linux系统使用ss命令查看端口状态 目录 1.可用工具 2.ss帮助 2.1 选项分类说明 2.2 过滤选项family 2.3 过滤选项state 2.4 状态之间的关系 3.ss的使用 3.1 ...
- linux系统版本查看命令
发布:theboy 来源:net [大 中 小] 查看linux系统版本的命令 有如下命令可供参考: # lsb_release -a LSB Version: :core-3.1-ia ...
- Linux系统采用netstat命令查看DDOS攻击的方法
Linux系统采用netstat命令查看DDOS攻击的方法 来源:互联网 作者:佚名 时间:07-05 15:10:21 [大 中 小] 这篇文章主要为大家介绍了Linux系统采用netstat命令查 ...
- 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...
- Linux 系统巡检常用命令
Linux系统巡检常用命令 # uname -a # 查看内核/操作系统# cat /etc/centos-release # 查看centos操作系统版本# cat /proc/cpuinfo ...
- 9个Linux系统常用监控命令
我们的系统一旦上线跑起来我们自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的.但是这不是打开机器电源然后放任不管就可以得到的.所以我们要监视系统的运行状况,发现问题及时处理. 对于系统和网络 ...
随机推荐
- 为什么在进行Full GC之前最好进行一次Minor GC
摘自:<Java Performance>第三章 为什么在进行Full GC之前最好进行一次Minor GC? Garbage collecting the young generatio ...
- 北京儿研所自制药一览表,宝妈们必读!<转>
原帖地址:http://www.360doc.com/content/15/0910/22/22655489_498339090.shtml
- C#高级参数params的使用
params,可变参数,使用十分简单,看代码吧. using System; using System.Collections.Generic; using System.Linq; using Sy ...
- buntu下shell脚本运行异常:bash和…
转载于:http://www.51testing.com/?uid-225738-action-viewspace-itemid-208702 我用bash到语法写了一个shell脚本(准确的说是把书 ...
- 利用rowid删除数据库中无主键的相同记录
数据库中表没有添加主键,误插入了两条数据,现在需要删除其中一条记录. 利用rowid号,因为表中的每一行数据都有一个rowid,这个rowid 号是不同的,用select可以查询出来. select ...
- 关于fragment生命周期的两张图片
图1,fragment的生命周期,图2,fragment生命周期对应activity的生命周期
- Solr之缓存篇
原文出自:http://my.oschina.net/u/1026644/blog/123957 Solr在Lucene之上开发了很多Cache功能,从目前提供的Cache类型有: (1)filter ...
- 242. Valid Anagram 两个串的最基础版本
[抄题]: Given two strings s and t, write a function to determine if t is an anagram of s. For example, ...
- Qt中显示图像的两种方法
博客转载自:https://blog.csdn.net/lg1259156776/article/details/52325361 在Qt中处理图片一般都要用到QImage类,但是QImage的对象不 ...
- str() 和repr()的区别
>>> a='bbc' >>> a'bbc'>>> print abbc str()一般是将数值转成字符串:repr()是将一个对象转成字符串显示 ...