惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
ThreatConnect
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
H
Help Net Security
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
G
Google Developers Blog
量子位
U
Unit 42
I
InfoQ
V
V2EX
F
Fox-IT International blog
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
SecWiki News
SecWiki News
Know Your Adversary
Know Your Adversary
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
C
Cisco Blogs
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
Recorded Future
Recorded Future
T
Tenable Blog
W
WeLiveSecurity
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
www.infosecurity-magazine.com
www.infosecurity-magazine.com
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
PCI Perspectives
PCI Perspectives

文章列表

亚马逊的技术哲学 11月初的美国之旅 -- 参加微软的 Microsoft Ignite 2019 如何学习一门新的语言 思路清奇:通过 JavaScript 获取移动设备的型号 一些关于Logecho的新动态 利用dns解析来实现网站的负载均衡 服务器被sfewfesfs病毒攻击 从一些小白问题想到的 使用phar上线你的代码包 Ruby学习第一天 从如何获取可信赖的ip地址聊起 新版 SegmentFault 重构之系统架构 一个用于web开发的泛域名 我是如何看简历的 靠谱的前端工程师在哪里 PHP 5.6新特性之一:内部操作符重载 怎么样使用 Redis 来存储和查询 ip 数据 邮件发送服务AWS SES,Mailgun以及SendCloud 用PHP实现一个Amazon SES的代理服务器 在MySQL字段中使用逗号分隔符 JavaScript 教程 - SegmentFault 思否
如何优雅地连接ssh
joyqi · 2014-06-22 · via

作为一个开发者,经常要面对管理一大堆服务器的情况,对unix类服务器,我们一般用ssh连接来管理。那么你一般怎么连接ssh,输入密码?弱爆了,既难得记,又不安全。现在俺们都用证书来连接

使用证书来管理连接至少有如下两个好处

  1. 安全,目前生成证书的方式不管是RSA还是DSA无论从位数上还是加密方式上都比自己生成的密码安全许多。
  2. 方便,有了证书以后你就不用再记忆密码了,系统会自动使用证书跟服务器接驳,这一过程不需要人工干预

使用证书连接ssh也非常简单,首先你得生成一个证书,在shell中输入如下命令

ssh-keygen -t rsa -C joyqi -f my-key-file
  • -t定义的是加密方式,一般有rsadsa两种
  • -C定义的是注释,一般也可以不写
  • -f定义了输出的证书文件名,不需要写后缀,因为生成的证书包含了公钥和私钥两个文件,它会自动帮你加文件名。

我们执行后可以看到如下结果

$ ssh-keygen -t rsa -C joyqi -f my-key-file
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in my-key-file.
Your public key has been saved in my-key-file.pub.
The key fingerprint is:
57:75:20:37:e2:53:29:ef:86:09:8e:1b:47:2b:6f:88 joyqi
The key's randomart image is:
+--[ RSA 2048]----+
|            o *o.|
|           ..*.o |
|            +o   |
|          o. ..  |
|        S+.o +   |
|        +.+ o o  |
|       . B   .   |
|      E o o      |
|         .       |
+-----------------+
$ ls
my-key-file     my-key-file.pub

可以在上面的命令执行完成,我们已经得到两个文件my-key-filemy-key-file.pub。前者就是你的私钥,是由你自己个人保存的,后者是公钥,你需要把它上传到任何你想用这个私钥来登录的服务器上。

ok,现在你需要把公钥文件上传到服务器上,一般我建议用scp命令

scp my-key-file.pub loginname@yourdomain.com:.

loginnameyourdomain.com分别替换为你的登录名和服务器地址。上传完后我们需要告诉服务器,以后处理loginname的登录时用公钥来验证,现在最后一次用ssh密码登录你的服务器,并执行如下命令

cat my-key-file.pub >> ~/.ssh/authorized_keys

在后面我们都用loginname来特指你自己的登录名,用yourdomain.com来特指你的服务器地址,请自行脑补

其中my-key-file.pub是我们刚刚上传的公钥文件名。现在我们还要告诉本机,连接yourdomain.com的时候使用my-key-file这个私钥来登录

退出ssh连接,回到本地。将刚才生成的my-key-file文件拷贝到~/.ssh目录下

cp my-key-file ~/.ssh/

然后编辑~/.ssh/config文件,如果没有,就创建一个,在其中写入如下配置内容

Host yourdomain.com
     IdentityFile ~/.ssh/my-key-file

很简单吧,一看就懂,根据你的需要自行修改。最后还有一步,别忘了将本地缓存的公钥文件删掉,因为那是你以前没有上传公钥时,缓存的服务器默认公钥,现在你用了自己生成的公钥就得把这个老的记录删掉

打开~/.ssh/known_hosts文件,找到包含yourdomain.com的那一行,将它删掉,然后保存退出

现在,你就可以正常登录服务器了,输入ssh loginname@yourdomain.com,第一次登录会出现

The authenticity of host 'yourdomain.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

这是因为你刚才把公钥删掉了,系统在连接本地没有缓存公钥的服务器时会询问下你,输入yes即可,然后你没输入密码就登入了服务器。怎么样,是不是很方便。