原文:https://www.ssh.com/ssh/port 作者:Tatu Ylonen

SSH (Secure Shell) 的端口是 22,它不是巧合,这是一个关于如何获得该端口的故事。

当我( Tatu Ylonen )于 2017 年 4 月首次发布这个故事时,它疯狂的传播在三天内就有大约 12 万名读者了。

获取SSH 22端口的故事

在 1995 年春,我写了 SSH 的初始版本,当时 telnet 和 FTP 正在被广泛使用。

我设计 SSH,是为了替代 telnet(端口 23)和 ftp(端口 21),端口 22 在当时是空闲的,正好就在 telnet 和 ftp 的端口之间,我想这使得这个端口号天然就带有可信度光环。但是该怎么拿到这个端口号呢?我没分配过端口这东西,但我知道谁负责分配端口号。

当时,端口分配的基本流程非常简单,因为当时互联网的规模还很小,我们还处在互联网爆炸非常早期的阶段。端口号是由 IANA(Internet Assigned Numbers Authority,互联网号码分配局)负责分配的。在那个时候,也就是说受人尊敬的互联网先锋是 Jon Postel 和 Joyce K. Reynolds。除了其他事情外,Jon 还是 IP(RFC 791),ICMP(RFC 792)和 TCP(RFC 793)等协议标准的编写者。你们有些人可能听说过他们。

对我来说,我觉得 Jon 实在太可怕了,因为他们撰写了所有主要的互联网RFC!

不过不管怎样,1995 年 7 月,就在发布 ssh-1.0 之前,我给 IANA 发了下面这封邮件:

尊敬的先生,

我写了一个程序,用于在不安全的网络上安全地从一台机器登录到另一台机器。与现有的 telnet 和 rlogin 协议及实现相比,它在安全性和功能性上有着重大改进。特别是,它能防止 IP、DNS 和路由欺诈。我的计划是在互联网上免费分发该软件,希望使它的应用尽可能广泛。

我想为这个软件申请一个注册的特权端口号。这个端口号最好在 1-255 之间,这样它可以在名称服务器的 WKS 字段中使用。

附上该协议的 RFC 草稿。这个软件已在我本地使用了几个月,已经万事俱备,只差端口号。如果能为它及时分配端口,我将在本周发布这个软件。目前我在 beta 测试版中用的是 22 端口,如果能继续使用这个端口那就太好了(它目前在端口列表中是未分配状态)。

这个软件的服务名是 "ssh" (即安全的 shell)。

此致,

Tatu Ylonen ylo@cs.hut.fi

第二天,一封 Joyce 的 email 就在邮箱里等着我:

Tatu,

我们已把 22 端口分配给了 ssh,并设置你为相应的联系人。

Joyce

这就成了!SSH 的端口从此就是 22!!!

1995 年 7 月 12 日凌晨 2 点 32 分,我把最终测试版本公布给了在赫尔辛基理工大学的测试人员。 下午 5:23 我向我的 beta 测试人员发布了 ssh-1.0.0 软件包。 1995 年 7 月 12 日下午 5 点 51 分,我向 cypherpunks@toad.com 邮件列表发送了关于 SSH(安全 Shell)的公告。 我也将其发布在几个新闻组、邮件列表中,同时直接发送给在互联网上讨论过相关主题的人员。

更改服务器中的SSH端口

默认情况下,SSH 服务器还是使用 22 端口。但是总会碰到某些需要让它在其它端口运行的情况。 测试是一个原因,在同一主机上运行多个配置是另外一个原因。 极少数情况下,它也可以在非 root 权限下运行,在这种情况,它必须使用非特权端口(即端口号 >= 1024)。

可以通过更改 /etc/ssh/sshd_config 中的 22 端口指令来配置端口号。 也可以使用 sshd 的 -p <port> 选项指定。 SSH 客户端和 sftp 程序也支持 -p <port> 选项。

在命令行中制定SSH端口

在 Linux 上使用 ssh 命令时, -p <port> 选项可用于指定要连接的端口号。 -P <port> (注意:大写 P)选项可以与 SFTPscp 一起使用。 SSH 端口号命令行设置将覆盖配置文件中配置的任何值。

通过防火墙配置SSH访问

SSH 是经常通过防火墙允许的少数协议之一。 不受限制的出站 SSH 是非常常见的,尤其是在规模较小且技术性较强的组织中。 入站 SSH 则通常仅限于一台或几台服务器。

出站SSH

在防火墙中配置出站 SSH 非常容易。 如果对传出流量有限制,只需创建允许 TCP 通过 22 出口的规则。 就这些。 如果要限制目标地址,还可以将规则限制为仅允许访问在云上的组织外部服务器,或访问具有守护云访问的跳转服务器。

后退隧道是一种风险

但是,不受限制的出站 SSH 可能存在风险。 SSH 协议支持隧道。 基本思想是,可以让外部服务器上的 SSH 服务器从任何地方监听连接,将这些连接转发回组织,然后连接到某个内部服务器。

这在某些环境中非常方便。 开发人员和系统管理员经常使用它来打开隧道,在旅行时,他们可以使用这些隧道从家里或笔记本电脑上进行远程访问。

但是,它通常会违反策略并从防火墙管理员和安全团队中获取控制权。 例如,它可能违反 PCI,HIPAA 或 NIST SP 800-53。 黑客和外国情报机构可以利用它将后门留给组织。

CryptoAuditor 是一种可以在防火墙或一组云服务器的入口点控制隧道的产品。 它与通用 SSH 密钥管理器一起使用以访问主机密钥,并能够使用它们在防火墙处解密 SSH 会话并阻止未经授权的转发。

入站SSH访问

对于入站访问,有一些实用的替代方案:

  • 配置防火墙以将到端口 22 的所有连接转发到内部网络或 DMZ 上的特定 IP 地址。 在该 IP 地址运行 CryptoAuditor 或跳转服务器,以控制和审核对组织的进一步访问。

  • 使用防火墙上的不同端口访问不同的服务器。

  • 只有在使用 VPN(虚拟专用网络)登录后才允许 SSH 访问,通常使用 IPsec 协议。

通过iptables启用SSH

Iptables 是一种内置在 Linux 内核中的主机防火墙, 它通常配置为通过阻止访问未明确打开的任何端口来保护服务器。如果在 server 上启用了 iptables,可以用以下命令来允许传入 SSH 访问请求。 它们必须以 root 权限运行。

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

在某些系统里可以保存规则设置:

service iptables save


·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

为什么 SSH 的默认端口是 22 ?相关推荐

  1. Linux之ssh服务默认端口修改

    2019独角兽企业重金招聘Python工程师标准>>> 导读 SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形 ...

  2. 修改smb默认端口_centos7 ssh端口更改方法

    至于为什么要修改SSH端口号,那是因为大家都知道SSH的默认端口是22,为了让我们的服务器安全性更高一些,也就有了修改SSH默认端口的想法. 平常未修改SSH默认端口时,我们通常是ssh用户名@IP地 ...

  3. SSH 默认端口配置

    SSH 有两层含义: 一是 SSH(Secure Shell),由 IETF 的网络小组(Network Working Group)所制定的应用层安全外壳协议,用于专为远程登录会话和其他网络服务提供 ...

  4. b宝塔 centos端口更改_centos修改ssh默认端口号的方法示例

    linux 一:修改/etc/ssh/sshd_config配置文件(注意:这里是sshd_config,而不是ssh_config) 1:查看ssh的默认端口号 netstat -anp|grep ...

  5. git 从远程git服务上拉代码 git服务器非默认端口

    从服务器上拉代码有如下报错: fatal: Not a git repository (or any of the parent directories): .git 初始代本地版本库: [root@ ...

  6. 课题:修改ssh的访问端口

    课题:修改ssh的访问端口 实验内容 详细操作 1,查看端口 2,修改配置文件 3,重启sshd 4,更改selinux 5,查看端口 6,通过ssh命令access主机 7,关闭防火墙 实验内容 1 ...

  7. Linux ssh多个端口开启

    Linux ssh的多个端口开启 通常情况下,ssh的远程端口是22,但是也有部分需求在除22之外的端口远程连接.在系统环境CentOS7.6下想要多开几个端口用于ssh登录.最简单的方法自然是修改s ...

  8. Linux 修改SSH 默认端口 22,防止被破解密码

    2019独角兽企业重金招聘Python工程师标准>>> Linux/Unix 系统,很多人使用SSH + 密码来登陆服务器,默认 22端口,这样会有被暴力破解密码的危险(除非密码足够 ...

  9. 下列服务使用的默认端口:ftp,ssh,telnet,dhcp,mail,pop3,smtp,dns,http,sm

    FTP的端口是 21 SSH (Secure Shell)服务使用tcp 22 端口 TELNET  23 端口 DHCP server的端口号是67 MAIL 的端口号是25\110 pop3\sm ...

最新文章

  1. SpringBoot笔记1-使用idea创建SpringBoot的hello world
  2. leetcode — maximum-subarray
  3. 学习 慕课网 PHP工程师学习计划--我的笔记汇总
  4. LINQ TO XML练习
  5. Setting up Pytorch with Python 3 on Ubuntu(Source code compilation)
  6. JVM调优:栈上分配和线程本地分配TLAB
  7. ubuntu如何完全卸载和安装 Java及android环境?【转】
  8. spring 配置声明式事务 疯狂JAVA
  9. SAP S/4HANA Customer Vendor Integration-CVI锁机制的实现
  10. 运行银联支付系统demo
  11. 几个优化 Cacti 监控服务性能的技巧
  12. B00004 atoi函数
  13. angular自带的一些api_在Angular软件中执行API请求的正确方式,了解一下
  14. LM358芯片中文资料(搬运)
  15. java webservice接口开发实例_Webservice 接口开发简单例子
  16. 【Python游戏】一个可以恶搞朋友的贪吃蛇小游戏 | 附带源码
  17. 基于DRM框架的HDMI热插拔流程分析
  18. 林轩田之机器学习课程笔记( embedding numerous feature之support vector regression)(32之22)
  19. 更改完善后的导出实现(使用FreeMarker导出Word文档,在浏览器实现的导出下载,和上一篇导出主要是代码的更改,流程无变化)
  20. 金三银四产品人跳槽指南——找准定位,突破职业瓶颈

热门文章

  1. 360展示广告智能化演进
  2. 老大吩咐的可重入分布式锁,终于完美的实现了~
  3. 精心推荐10个高质量的网站,打开新世界的大门
  4. 以问答形式,抽象中台领域框架
  5. 一文读懂Serverless,配置化思想复用到平台系统中
  6. linux tomcat端口冲突解决
  7. 实体-关系图的基本组成
  8. binlog数据库不写入binlog_mysql 为什么不能仅仅用 binlog 保证不丢数据
  9. mysql 5.7 json函数_Mysql5.7中对于JSON函数设置的案例详细说明
  10. ci持续集成工程师前景_持续集成CI---失败原因