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命令的更多相关文章

  1. Linux系统下ssh的相关配置详细解析

    Linux系统下ssh的相关配置进行了详细的分析介绍. ssh是大家常用的登录linux服务器的方式,但是为了安全考虑,有时候我们需要针对ssh做一些特殊处理,本文记录笔者曾经做过的一些修改,供大家参 ...

  2. [r]Ubuntu Linux系统下apt-get命令详解

    Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...

  3. Linux系统下RPM命令和yum的使用

    Linux系统下RPM命令和yum的使用 RPM:Redhat Packages Manager (红帽系列软件包的管理),主要用于安装.卸载.升级和管理软件. 一个包由下面几个部分构成: 例如:ht ...

  4. Linux系统使用ss命令查看端口状态

    Linux系统使用ss命令查看端口状态 目录 1.可用工具 2.ss帮助 2.1 选项分类说明 2.2 过滤选项family 2.3 过滤选项state 2.4 状态之间的关系 3.ss的使用 3.1 ...

  5. linux系统版本查看命令

    发布:theboy   来源:net   [大 中 小] 查看linux系统版本的命令 有如下命令可供参考: # lsb_release -a LSB Version:    :core-3.1-ia ...

  6. Linux系统采用netstat命令查看DDOS攻击的方法

    Linux系统采用netstat命令查看DDOS攻击的方法 来源:互联网 作者:佚名 时间:07-05 15:10:21 [大 中 小] 这篇文章主要为大家介绍了Linux系统采用netstat命令查 ...

  7. 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33

    今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...

  8. Linux 系统巡检常用命令

    Linux系统巡检常用命令   # uname -a # 查看内核/操作系统# cat /etc/centos-release # 查看centos操作系统版本# cat /proc/cpuinfo ...

  9. 9个Linux系统常用监控命令

    我们的系统一旦上线跑起来我们自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的.但是这不是打开机器电源然后放任不管就可以得到的.所以我们要监视系统的运行状况,发现问题及时处理. 对于系统和网络 ...

随机推荐

  1. java 多线程系列基础篇(三)之start()和run()的区别

    概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答. start() 和 run()的区别说明 start() : 它的作用是启动一个新线程,新线程会执行相应 ...

  2. 问题:oracle LISTAGG 连接字符串;结果:Oracle 连接字符串的方法

    Oracle 连接字符串的方法 方法一:wmsys.wm_concat(column) 介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型.括号里面 ...

  3. 【MySQL】20个经典面试题(转)

    原文链接:http://bbs.51cto.com/thread-1470880-1.html Part2:经典题目 1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 2.my ...

  4. 关于android studio中使用class.forname()方法动态获取类实例报NO CLASS FOUND异常的几种处理方法

    最近在做一个项目的时候需要用到反射来回调子类的方法,但是在反射过程中总是在class.forname()方法抛出NO CLASS FOUND异常,经过几部检查,问题解决,在此总结一下引起该问题的原因 ...

  5. 第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-2 session的基本原理与create命令的使用

    客户端与服务端之间存在的连接,那么这样的一个连接我们就称之为会话,也就是session.其实就相当于是我们在做JSP或者说是Service的时候,那么服务端是Servlet,客户端使用的是浏览器.浏览 ...

  6. Realsense深度相机资料

    1.Realsense SDK 2.0 Ubuntu 16.04 安装指导网址 https://github.com/IntelRealSense/librealsense/blob/master/d ...

  7. ROS Learning-007 beginner_Tutorials ROS节点

    ROS Indigo beginner_Tutorials-06 ROS节点 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LT ...

  8. linux中的管道命令

    很有用的一个命令,用法如下: A | B 是把A命令的输出作为B命令的输入. 比如我想查看一下我在终端输入过的命令,可以这样: history | less

  9. JButton变换样式

    JButton变换样式 摘自:绘制JButton圆角效果 http://caleb-520.iteye.com/blog/1039493 RButton btnNewButton_1 = new RB ...

  10. Python程序设计1——基础知识

    1 Python脚本设计简介 1.1 输出"Hello World" 和一般的语言一样,运行python程序有两种方式,一种是GUI交互式命令,一种是通过脚本文件,前者适合小型简单 ...