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系统常用监控命令
我们的系统一旦上线跑起来我们自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的.但是这不是打开机器电源然后放任不管就可以得到的.所以我们要监视系统的运行状况,发现问题及时处理. 对于系统和网络 ...
随机推荐
- SqlServer——存储过程(未完工)
http://www.cnblogs.com/blsong/archive/2009/11/30/1613534.html http://blog.csdn.net/lenotang/article/ ...
- 10-17C#第四部分--类型(1)
C#类型--String类 一.String类型 () 注:string与String的不同:string属于String的数据类型,小写string是大写String类型的实例化:string属于S ...
- Latex 多个参考文献的引用
如果在文章中出现连续引用多个参考文献的情况,希望显示的格式为 [1-5,9,12],那么可以如下处理: 在文章的导言区加 \usepackage[square, comma, sort&com ...
- Enumeration与Iterator的对比
Enumeration与Iterator的对比 Enumeration 接口 Iterator 接口 参数的含义 枚举类型 迭代器元素类型 所在包 java.util 父类 无 子类 StringTo ...
- JAVA基础知识总结12(多线程)
进程:正在进行中的程序.其实进程就是一个应用程序运行时的内存分配空间. 线程:其实就是进程中一个程序执行控制单元,一条执行路径.进程负责的是应用程序的空间的标示.线程负责的是应用程序的执行顺序. 一个 ...
- 2-2 zookeeper下载、安装以及配置环境变量
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/ FTP的软件:FileZilla Client 登录腾讯云服务器tail /va ...
- ArcGIS Field Type /esriFieldTypeDate(转)
ArcGIS Field Type The following table outlines the equivalent field data types in ArcCatalog, ArcO ...
- Node.js的__dirname,__filename,process.cwd(),./的含义
简单说一下这几个路径的意思,: __dirname: 获得当前执行文件所在目录的完整目录名 __filename: 获得当前执行文件的带有完整绝对路径的文件名 process.cwd():获得当前执行 ...
- CF570E Pig and Palindromes
完全不会这种类型的$dp$啊…… 考虑回文串一定是可以拆分成(偶数个字母 + 偶数个字母)或者(偶数个字母 + 一个字母 +偶数个字母),两边的偶数个字母其实是完全对称的.因为这道题回文串的长度是给定 ...
- CodeForces 566D Restructuring Company (并查集+链表)
题意:给定 3 种操作, 第一种 1 u v 把 u 和 v 合并 第二种 2 l r 把 l - r 这一段区间合并 第三种 3 u v 判断 u 和 v 是不是在同一集合中. 析:很容易知道是用并 ...