标签归档:DSA

使用私钥方式SSH登录Linux服务器,免输入密码,免密码登录 2022-11-20

段落1、需求描述

开在公网的服务器,不管是Win还是Linux,常常会遭受到无聊的暴力破解攻击。这种情况下,自身密码如果复杂度是够的,也不必太过担心。不过,这种事情不胜其扰。要么通过防火墙过滤,要么就可以如题一般,配置Linux的SSH登录方式为私钥登录。

段落2、常见的算法格式

DSA(用于数字签名算法)的签名生成速度很快,验证速度很慢,加密时更慢,但解密时速度很快,一般仅用于签名。

RSA算法(可用于加密和数字签名)的安全性基于这样的事实,大整数的因式分解被认为是难以破解 ,而DSA安全性基于离散对数问题。今天已知用于分解大整数块的最快算法是通用数字场筛(可以理解为对简单合理筛或二次筛的改进算法),也是解决有限域中的离散对数问题的最快算法,该算法以DSA指定的大素数为模。

OpenSSH 7.0及以上版本默认禁用了ssh-dss(DSA)公钥算法。官方没有给出具体的解释,但其中可能有OpenSSH的DSA密钥位数生成的原因,同时生成签名时随机性差,可能会泄漏私钥,且以现在机算机的算力,DSA 1024-bit已经实际上可破解,建议不使用

ECDSA算法(椭圆曲线数字签名算法)

ECDSA是用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。而ECC(全称Elliptic Curves Cryptography)是一种椭圆曲线密码编码学。

ECDH每次用一个固定的DH key,导致不能向前保密(forward secrecy),所以一般都是用ECDHE(ephemeral)或其他版本的ECDH算法。ECDH则是基于ECC的DH( Diffie-Hellman)密钥交换算法。

ECC与RSA 相比,有以下的优点:

  • 相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。
  • 计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。
  • 存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。
  • 带宽要求低使得ECC具有广泛得应用前景。

一般来说,普通人,选用RSA的就可以,兼容性,安全性都够了。通常,RSA,DSA,ECDSA,EdDSA和Ed25519都用于数字签名,但只有RSA也可以用于加密。

Key typePublic key file namePrivate key file name
DSA~/.ssh/id_dsa.pub~/.ssh/id_dsa
RSA~/.ssh/id_rsa.pub~/.ssh/id_rsa
ECDSA~/.ssh/id_ecdsa.pub~/.ssh/id_ecdsa
Ed25519 (Edwards-curve DSA)~/.ssh/id_ed25519.pub~/.ssh/id_ed25519

几种常见的密钥对生成

ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa 
ssh-keygen -t ecdsa -b 521
ssh-keygen -t ed25519
ssh-keygen -f ~/tatu-key-ecdsa -t ecdsa -b 521   # 指定生成的名称

如果针对我们需要生成SSH密钥对的场景,仅是登录服务器需求,默认长度2048即可,要安全可靠一点,长度可选4096。

使用如下的命令,即可生成密钥对,如果是在服务器VPS上执行,下载私钥后,务必把服务器上的私钥文件删除。下载到本地,记得控制私钥文件的访问权限。

段落3、实际落地操作命令

3.1、使用4096长度,生成一个密钥对

ssh-keygen -t rsa -b 4096

生成的文件,id_rsa,为私钥,需要保存在自己手里,保存好。

生成的文件,id_rsa.pub,为公钥,一般放在服务器VPS的 ~/.ssh/ 目录下。

3.2、复制公钥的字符串,到服务器的~/.ssh/目录下

创建目录,复制id_rsa.pub文件中的内容,追加写入到~/.ssh/authorized_keys文件中

mkdir -p ~/.ssh/
echo "public_key_string" >> ~/.ssh/authorized_keys   

# public_key_string 为你id_rsa.pub文件中的全部字符串内容

3.3、本地使用私钥登录服务器

3.3.1、如果本地也是Linux系统,命令行模式下

其中id_rsa文件的路径,我这里放在当前目录下,可选全路径

ssh -i ./id_rsa root@23.11.55.166

3.3.2、如果本地是windows系统,使用putty/XShell/FinalShell之类的图形界面客户端,则直接调用私钥文件即可。

假设使用putty登录,输入IP,点开右方SSH加号,点击Auth,点击Browse加载私钥后点击open即可。

段落4、关闭密码登录,仅用私钥登录(此章节的操作,为可选)

修改SSH服务器上的配置文件 /etc/ssh/sshd_config ,增加或者修改如下的参数的配置值

# 禁用密码登录
PasswordAuthentication no

# 启用私钥登录
RSAAuthentication yes
PubkeyAuthentication yes

# 允许root登录
PermitRootLogin yes

修改参数完成后,重启SSHD服务即可

systemctl restart sshd

附录1、

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Donate
云乞讨

附录2、视频教程链接

000117. 免输入密码,使用私钥方式SSH登录Linux服务器 2022-11-20

本期博客地址 https://dasmz.com/?p=2898
本期视频地址 https://youtu.be/d9y9Kxl-4G0
博客地址 https://dasmz.com
Twitter  https://twitter.com/fdmove
Youtube  https://www.youtube.com/@DasmzStudio
全部视频的目录索引 https://dasmz.com/?p=1342