首页 > 其他分享 >强化 SSH 让你更加安心

强化 SSH 让你更加安心

时间:2023-09-03 18:04:33浏览次数:34  
标签:私钥 登录 id 密码 SSH 服务器 安心 强化 ssh

1. 强化密码登录

密码登录很方便,因为你可以从任何地方的任何机器上登录。但是它们在暴力攻击面前也是脆弱的。尝试以下策略来强化你的密码登录:

  • (1)使用一个密码生成工具,例如 pwgen。pwgen 有几个选项,最有用的就是密码长度的选项(例如:产生一个12位字符的密码pwgen 12)
  • (2)不要重复使用密码。忽略所有那些不要写下你的密码的建议,然后将你的所有登录信息都记在一个本子上,如果你不相信我的建议,那总可以相信安全权威 Bruce Schneier 吧。如果你足够细心,没有人能够发现你的笔记本,那么这样能够不受到网络上的那些攻击。
  • (3)你可以为你的登录记事本增加一些额外的保护措施,例如用字符替换或者增加新的字符来掩盖笔记本上的登录密码。使用一个简单而且好记的规则,比如说给你的密码增加两个额外的随机字符,或者使用单个简单的字符替换,例如 # 替换成 * 。
  • (4)为你的 SSH 服务开启一个非默认的监听端口。虽然是很老套的建议,但是它确实很有效。检查你的登录,很有可能 22 端口是被普遍攻击的端口,其他端口则很少被攻击。
  • (5)使用 Fail2ban来动态保护你的服务器,是服务器免于被暴力攻击。
  • (6)使用不常用的用户名。绝不能让 root 可以远程登录,并避免用户名为“admin”。
2. 解决 Too Many Authentication Failures 报错

当我的 ssh 登录失败,并显示“Too many authentication failures for carla”的报错信息时,我们不应该气馁,伤痛之感并不能解决问题。解决办法就是在你的(客户端的) ~/.ssh/config 文件设置强制密码登录。如果这个文件不存在,首先创个 ~/.ssh/目录。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

然后在一个文本编辑器创建 ~/.ssh/confg 文件,输入以下行,使用你自己的远程域名替换 HostName。

HostName remote.site.com
PubkeyAuthentication=no

(LCTT 译注:这种错误发生在你使用一台 Linux 机器使用 ssh 登录另外一台服务器时,你的 .ssh 目录中存储了过多的私钥文件,而 ssh 客户端在你没有指定 -i 选项时,会默认逐一尝试使用这些私钥来登录远程服务器后才会提示密码登录,如果这些私钥并不能匹配远程主机,显然会触发这样的报错,甚至拒绝连接。因此本条是通过禁用本地私钥的方式来强制使用密码登录——显然这并不可取,如果你确实要避免用私钥登录,那你应该用 -o PubkeyAuthentication=no 选项登录。显然这条和下两条是互相矛盾的,所以请无视本条即可。)

3. 使用公钥认证

公钥认证比密码登录安全多了,因为它不受暴力密码攻击的影响,但是并不方便因为它依赖于 RSA 密钥对。首先,你要创建一个公钥/私钥对;下一步,私钥放于你的客户端电脑,并且复制公钥到你想登录的远程服务器。你只能从拥有私钥的电脑登录才能登录到远程服务器,你的私钥就和你的家门钥匙一样敏感;任何人获取到了私钥就可以获取你的账号。你可以给你的私钥加上密码来增加一些强化保护规则。使用 RSA 密钥对管理多个用户是一种好的方法:当一个用户离开了,只要从服务器删了他的公钥就能取消他的登录。

以下例子创建一个新的 3072 位长度的密钥对,它比默认的 2048 位更安全,而且为它起一个独一无二的名字,这样你就可以知道它属于哪个服务器。

$ ssh-keygen -t rsa -b 3072 -f id_mailserver

以下创建两个新的密钥, id_mailserver 和 id_mailserver.pub ,id_mailserver 是你的私钥--不要传播它!现在用 ssh-copy-id 命令安全地复制你的公钥到你的远程服务器。你必须确保在远程服务器上有可用的 SSH 登录方式。

$ ssh-copy-id -i  id_rsa.pub user@remoteserver

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
user@remoteserver's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user@remoteserver'"
and check to make sure that only the key(s) you wanted were added.

ssh-copy-id 会确保你不会无意间复制了你的私钥;从上述输出中复制登录命令,记得带上其中的单引号,以测试你的新的密钥登录。

$ ssh 'user@remoteserver'

它将用你的新密钥登录,如果你为你的私钥设置了密码,它会提示你输入。

4. 取消密码登录

一旦你已经测试并且验证了你的公钥可以登录,就可以取消密码登录,这样你的远程服务器就不会被暴力密码攻击。如下设置你的远程服务器的 /etc/sshd_config 文件。

PasswordAuthentication no

然后重启服务器上的 SSH 守护进程。

5. 设置别名 -- 这很快捷而且很有 B 格

你可以为你的远程登录设置常用的别名,来替代登录时输入的命令,例如:

ssh -u username -p 2222 remote.site.with.long-name

你可以使用 ssh remote1。你的客户端机器上的 ~/.ssh/config 文件可以参照如下设置

Host remote1
HostName remote.site.with.long-name
Port 2222
User username
PubkeyAuthentication no

如果你正在使用公钥登录,可以参照这个:

Host remote1
HostName remote.site.with.long-name
Port 2222
User username
IdentityFile  ~/.ssh/id_remoteserver

标签:私钥,登录,id,密码,SSH,服务器,安心,强化,ssh
From: https://www.cnblogs.com/roccn/p/17675253.html

相关文章

  • linux ~/.ssh 目录权限的问题
    折腾半天利用客户端的公钥免输入密码登陆,结果发现~/.ssh/authorized_keys的文件权限有问题应该设置成600或者700,也不知道是修改过这个文件权限还是默认就不是600或700权限终极解决是设计了个脚本 1#!/bin/bash2find.ssh/-typef-execchmod600{}\;;3find.ssh/......
  • dfs理解——以出栈方式的字典序为例(对上一个出栈字典序的完善和强化)
    笔者认为,dfs的本质在于试验每一方向和还原。试验每一方向的含义是:将实际题目中的条件几何化为多个方向,给这些方向赋予优先级(一般采用在dfs函数中写入顺序为优先级,这样比较简单方便),按照优先级的顺序来进行试验,每个节点都有基本相同的方向和优先级的,就可以使用dfs的方式解决。 ......
  • 王道408---CO---强化课考试小结
    一、8bit补码加法器的实现8bit补码加/减加法器实现:不加多路选择器则只能进行加法操作二、cache存储器地址结构与存储结构注意这俩是不一样的cache映射方式的地址结构如下:cache存储结构(行结构)如下cache映射方式的地址结构中的块内地址=log2(存储结构中的数据)并且cach......
  • CentOS系统中使用SSH进行远程连接
      安装SSH客户端和服务器在CentOS系统中,默认情况下已经安装了OpenSSH客户端和服务器。如果没有安装,可以通过以下命令来安装:sudoyuminstallopenssh-serveropenssh-client启动SSH服务,注意要切换root账号执行命令安装完毕后,需要启动SSH服务。可以通过以下......
  • FreeBSD允许root用户通过SSH登陆
    因为安全原因,安装完FreeBSD后默认是不允许root用户通过SSH协议进行远程登录的,但是我们可以手动配置开启它。1、修改inetd.conf文件打开文件/etc/inetd.conf并找到ssh两行,然后把注释去掉保存,如下:#$FreeBSD$##Internetserverconfigurationdatabase##Define*both*IPv4......
  • buildroot 构建根文件系统(2)使能 SSH
    一、开发背景承接上一章节,构建最小系统后成功运行后,发现没有SSH功能SSH:SecureShellProtocol,开发阶段常用SSH远程传输文件,只要匹配IP地址即可二、开发需求配置系统使能SSH功能三、开发环境LinuxUbuntu 4.15.0-65-generic+ buildroot-2023.0......
  • 如何在 Linux 中设置 SSH 无密码登录
    SSH(SecureSHELL)是一种开源且可信的网络协议,用于登录远程服务器以执行命令和程序。它还用于使用安全复制(SCP)命令和rsync命令通过网络将文件从一台计算机传输到另一台计算机。在本文中,我们将向您展示如何在基于RHEL的Linux发行版(例如CentOS、Fedora、RockyLinux和A......
  • Git查看本机 ssh 公钥或生成公钥
    第一步查看git的ssh公钥是否存在在安装目录中打开GitBash并打开,然后在GitBash输入以下命名查看是否有密钥:ls-al~/.ssh第二步查看git的ssh公钥内容,并复制git的ssh公钥存储在id_rsa.pub文件中,如果id_rsa.pub文件,直接输入命令查看git公钥:cat~/.ssh/id_rsa.pub......
  • ssh连华为云的linux服务器报 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    谜底啊,就藏在谜面上└─#sshuname@ip-p22@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WARNING:REMOTEHOSTIDENTIFICATIONHASCHANGED!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ITISPOSSIBLETHATSOMEONEISDOIN......
  • SSH爆破应急响应
    0x00前言SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,容易被恶意者爆破,一旦被恶意者获取,可用来直接登录系统,控制服务器所有权限。0x01应急......