SSH详解
Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
SSH 通常用于远程访问和执行命令,但是它也支持隧道,转发任意 TCP 端口以及 X11 连接;它还能够用 SFTP 或 SCP 协议来传输文件。
一个 SSH 服务器,默认地,在 TCP 端口 22 进行监听。一个 SSH 客户端程序通常被用来建立一个远程连接到 sshd 守护进程。这两者都被广泛地存在于现代操作系统中,包括 Mac OS X,GNU/Linux,Solaris 和 OpenVMS 等。以专利的,自由软件的以及开源版本的形式和不同的复杂性和完整性存在。
配置SSH
客户端
SSH客户端的配置文件是/etc/ssh/ssh_config
或 ~/.ssh/config
.
现在已经不需要额外设置 Protocol 2
, 默认的协议已经是 Protocol 2
了(http://www.openssh.org/txt/release-5.4)。
守护进程
SSH 守护进程的配置文件是/etc/ssh/sshd_config
。
实例:
只允许某些用户访问的话,加入这一行:
AllowUsers user1 user2
只允许一些组访问:
AllowGroups group1 group2
要禁止通过SSH进行root用户登录,加入以下行:
PermitRootLogin no
管理 sshd 守护进程
你可以使用下面的命令启动sshd:
systemctl start sshd
你可以使用下面的命令开机启动sshd:
systemctl enable sshd.service
ListenAddress 192.168.1.100
,它可能会在引导时启动失败,因为默认的 sshd.service 单元文件没有对网络接口启动的依赖。当绑定到一个 IP 地址时,你需要添加 After=network.target
到自定义的 sshd.service 单元文件中。参见 Systemd#Replacing provided unit files[broken link: invalid section].或者你可以启用SSH Daemon socket,这样当第一次传入连接时启动守护进程:
systemctl enable sshd.socket
如果你使用非默认端口22,你必须在文件(/lib/systemd/system/sshd.socket)中设置"ListenStream"为相应的端口。
/etc/ssh/ssh_config配置文件说明:
Host *
选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 ForwardAgent no
“ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。 ForwardX11 no
“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。 RhostsAuthentication no
“RhostsAuthentication”设置是否使用基于rhosts的安全验证。 RhostsRSAAuthentication no
“RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。 RSAAuthentication yes
“RSAAuthentication”设置是否使用RSA算法进行安全验证。 PasswordAuthentication yes
“PasswordAuthentication”设置是否使用口令验证。 FallBackToRsh no
“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。 UseRsh no
“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。 BatchMode no
“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 CheckHostIP yes
“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。 StrictHostKeyChecking no
“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 IdentityFile ~/.ssh/identity
“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。 Port
“Port”设置连接到远程主机的端口。 Cipher blowfish
“Cipher”设置加密用的密码。 EscapeChar ~
“EscapeChar”设置escape字符。
/etc/ssh/sshd_config配置文件说明
Port
“Port”设置sshd监听的端口号。 ListenAddress 192.168.1.1
“ListenAddress”设置sshd服务器绑定的IP地址。 HostKey /etc/ssh/ssh_host_key “HostKey”设置包含计算机私人密匙的文件。 ServerKeyBits
“ServerKeyBits”定义服务器密匙的位数。 LoginGraceTime
“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。 ClientAliveInterval (默认为0)
这个参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接 KeyRegenerationInterval
“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。 PermitRootLogin no
“PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。 IgnoreRhosts yes
“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。 IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts” StrictModes yes
“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 X11Forwarding no
“X11Forwarding”设置是否允许X11转发。 PrintMotd yes
“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。 SyslogFacility AUTH
“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。 LogLevel INFO
“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。 RhostsAuthentication no
“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。 RhostsRSAAuthentication no
“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。 RSAAuthentication yes
“RSAAuthentication”设置是否允许只有RSA安全验证。 PasswordAuthentication yes
“PasswordAuthentication”设置是否允许口令验证。 PermitEmptyPasswords no
“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。 AllowUsers admin
“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。
SSH详解的更多相关文章
- Eclipse 配置SSH 详解
http://blog.csdn.net/binyao02123202/article/details/18446523 最近看了很多招聘,其中很多我想去的公司都需要一些技能,其中熟练 Java SS ...
- [SSH服务]——SSH详解、常用的远程连接工具
在总结ssh原理前,我先做了一个ssh过程的实验 首先我搭建了这样一个实验环境: (1) SSH Server:10.0.10.198 (2) SSH Client:10.0.10.158 在Serv ...
- Linux下ftp和ssh详解
学习了几天Linux下ftp和ssh的搭建和使用,故记录一下.学习ftp和ssh的主要目的是为了连接远程主机,并且进行文件传输.废话不多说,直接开讲! ftp服务器 1. 环境搭建 本人的系统是Arc ...
- Linux ssh登录和软件安装详解
阿哲Style Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...
- SSH 连接慢的解决方案详解
SSH 连接慢的解决方案详解 http://www.codeceo.com/article/ssh-slow.html
- SSH 概念及使用详解
注意:转载请注明出处:http://www.programfish.com/blog/?p=124 SSH 基本概念 SSH 英文全称是secure shell,字面意思:安全的shell. SSH协 ...
- rsync命令详解、rsync用ssh隧道方式同步
● rsync格式安装命令 yum install -y rsync与scp的区别:scp复制为完全覆盖,rsync为增量同步,只同步修改过的数据.rsync命令格式如下: rsync 选项 源文件 ...
- ssh转发代理:ssh-agent用法详解
SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 使用ssh-agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如 ...
- SSH隧道:端口转发功能详解
SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...
随机推荐
- tc 146 2 RectangularGrid(数学推导)
SRM 146 2 500RectangularGrid Problem Statement Given the width and height of a rectangular grid, ret ...
- PHP Socket实现websocket(二)Socket函数
PHP socket函数是调用系统的的Socket函数,可以参考C语言的socket函数. Socket函数:http://php.net/manual/en/book.sockets.php 服务器 ...
- 【转】CentOS环境下yum安装LAMP(Linux+Apache+Mysql+php)
此种方法很简单.每次都用源码编译,浪费好多时间啊! 同样的网站程序在Linux下运行要比在windows下快出不少,所以决定使用Linux的发行版CentOS ,本文主要讲解在CentOS下使用yum ...
- Android开发学习笔记--一个有界面A+B的计算器
做了一个A+B的APP,虽然很简单,但是作为初学者还是弄了几个小时才弄好,什么东西都要看书或者百度,但最后成功了,还是很开心的,收货蛮大的.现在把过程写一下: 首先给出效果图: 一开始布局一直有问题, ...
- Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡
http://blog.csdn.net/janeky/article/details/17598113 在之前的几篇Blog总,我们已经系统学习了自动寻路插件Navmesh的相关概念和细节.然而,如 ...
- BZOJ 3665: maths
Sol 矩阵乘法+快速幂+欧拉定理. 首先观察题目可以发现 \(A_n\) 可以表示成关于 \(K\) 和 \(A_0\) 的几次幂的形式. \(A_0\) 就比较简单了 \(m^n\) 所以第一部分 ...
- 14 BasicHashTable基本哈希表类(一)——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...
- Python自动化之配置Python模块国内镜像
Linux环境 在~/.pip/pip.conf文件中添加或修改 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [instal ...
- vb.net 控件(包括字体)随窗体按比例缩放
Public Class frmDl Dim x As Single = 0 Dim y As Single = 0 Private Sub frmDl_Load(ByVal sender As Sy ...
- python suds 一坑
当被调用服务的返回xml内容值不是按照wsdl文件描述定义的, 就莫名奇妙返回suds.WebFault 没有更多详细信息! 于是将源码解压,并插入到sys.path[0], 通过设置断点的方式找出非 ...