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
警告: Systemd 是一个异步启动的进程。如果你绑定 SSH 守护进程到某个特定的 IP 地址 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详解的更多相关文章

  1. Eclipse 配置SSH 详解

    http://blog.csdn.net/binyao02123202/article/details/18446523 最近看了很多招聘,其中很多我想去的公司都需要一些技能,其中熟练 Java SS ...

  2. [SSH服务]——SSH详解、常用的远程连接工具

    在总结ssh原理前,我先做了一个ssh过程的实验 首先我搭建了这样一个实验环境: (1) SSH Server:10.0.10.198 (2) SSH Client:10.0.10.158 在Serv ...

  3. Linux下ftp和ssh详解

    学习了几天Linux下ftp和ssh的搭建和使用,故记录一下.学习ftp和ssh的主要目的是为了连接远程主机,并且进行文件传输.废话不多说,直接开讲! ftp服务器 1. 环境搭建 本人的系统是Arc ...

  4. Linux ssh登录和软件安装详解

    阿哲Style   Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...

  5. SSH 连接慢的解决方案详解

    SSH 连接慢的解决方案详解 http://www.codeceo.com/article/ssh-slow.html

  6. SSH 概念及使用详解

    注意:转载请注明出处:http://www.programfish.com/blog/?p=124 SSH 基本概念 SSH 英文全称是secure shell,字面意思:安全的shell. SSH协 ...

  7. rsync命令详解、rsync用ssh隧道方式同步

    ● rsync格式安装命令 yum install -y rsync与scp的区别:scp复制为完全覆盖,rsync为增量同步,只同步修改过的数据.rsync命令格式如下: rsync 选项 源文件 ...

  8. ssh转发代理:ssh-agent用法详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 使用ssh-agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如 ...

  9. SSH隧道:端口转发功能详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...

随机推荐

  1. 第五天 loadmore

    mutating func loadFresh(completion: (result: APIResult<DeserializedType>) -> ()) -> Canc ...

  2. 用H5的canvas做时钟

    <!doctype html><html> <head> <meta charset="UTF-8"> <title>D ...

  3. apache 访问出现403 Forbidden

    在linux虚拟机的apache上新增一个虚拟目录/var/wordpress,想把理论网挂上去. 在配置文件httpd.conf中,把”Include conf/extra/httpd-vhosts ...

  4. UOJ52——【UR #4】元旦激光炮

    1.题目大意:就是给你三个数组啦,然后让你找到其中的第K大,但是,不可以直接访问数组,必须通过一种函数,最后的分数 是看调用几次这个函数,100次以内10分,2000以内6分.... 2.分析:最开始 ...

  5. [BZOJ1901]Zju2112 Dynamic Rankings

    [BZOJ1901]Zju2112 Dynamic Rankings 试题描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i ...

  6. [转载]JavaEE学习篇之——网络传输数据中的密码学知识以及Tomcat中配置数字证书EE

    原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/21716557 今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一 ...

  7. BZOJ 1511: [POI2006]OKR-Periods of Words

    Description 求一个最长周期. Sol KMP. 一个点的最短周期就是 \(i-next[i]\) 此外 \(i-next[next[i]],i-next[next[next[i]]]\) ...

  8. Python 类变量和成员变量

    Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...

  9. [ruby on rails] 跟我学之(10)数据输入验证

    这里简单加上几个验证,非空,最小长度,唯一 修改模型 修改app/models/post.rb文件,如下: class Post < ActiveRecord::Base #attr_acces ...

  10. git cherry-pick简介

    本文编辑整理自: http://sg552.iteye.com/blog/1300713 http://web.mit.edu/bitbucket/git-doc/git-cherry-pick.tx ...