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

推荐订阅源

Google DeepMind News
Google DeepMind News
I
InfoQ
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
GbyAI
GbyAI
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
美团技术团队
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
M
MIT News - Artificial intelligence
D
Docker
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
博客园 - 叶小钗

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白?
SSH 免密登陆, SSH Config 配置
2017-08-31 · via Razeen`s Blog

最近又在捣腾捣腾自己的博客,作死的将阿里云磁盘重置了一下。需要重新配置一个SSH登陆的秘钥,发现忘了该怎么开始,这里整理下一些日常用的SSH相关姿势==。

SSH是什么

SSH (Secure Shell) 简单来说就是一种用于计算机之间加密登陆的网络协议。使用SSH协议登陆到另外一台计算机,能有效的保证远程管理过程中的数据安全。

SSH免密登陆

生成RSA秘钥对

SSH相关的秘钥一般都存放在~/.ssh目录下面。如果你和我一样~/.ssh目录存在以下的两个文件:

  • id_rsa
  • id_rsa.pub

这就说明RSA秘钥对已经有个这个步骤你可以直接跳过。如果没有,继续。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxx/.ssh/id_rsa):  # 回车即可
# 如果没有~/.ssh目录 这里会显示Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): # 输入秘钥密码或回车(如果设置密码以后每次使用私钥都需要输入该密码)
Enter same passphrase again: # 和上一步相同,输入秘钥密码或回车。
Your identification has been saved in /root/.ssh/id_rsa. # 私钥文件
Your public key has been saved in /root/.ssh/id_rsa.pub. # 公钥文件
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxx xxx@xxx.local
The key's randomart image is:
+---[RSA 2048]----+
|      .....      |
+----[SHA256]-----+

到这里,秘钥对已经生成。

在服务器安装授权秘钥

1.根据公钥生成授权秘钥。

$ cat ~/.ssh/id_rsa.pub >> authorized_keys

2.上传授权秘钥到服务器。

$ scp authorized_keys root@razeen.me:~ 
root@razeen.me's password:
authorized_keys             100%  748    21.5KB/s   00:00
  1. 登陆服务器,配置authorized_keys。
$ ssh root@razeen.me
root@razeen.me's password:

# 登陆上去后 我们可以看到刚刚上传的文件
[root@xxxx ~]$ ls
authorized_keys

# 新建 ~/.ssh目录,将authorized_keys放到该目录下。
[root@xxxx ~]$ mkdir .ssh
[root@xxxx ~]$ mv authorized_keys .ssh/

# 给秘钥授权
[root@xxxx ~]$ chmod 600 .ssh/authorized_keys
[root@xxxx ~]$ chmod 700 .ssh/

4.设置SSH,打开密钥登录功能。

相关的SSH设置,在/etc/ssh/sshd_config文件内。

[root@xxxx ~]$vi /etc/ssh/sshd_config

# 将下面两行放出
RSAAuthentication yes  # Centos8中过时
PubkeyAuthentication yes

# 如果你和我一样 不想用密码登陆 将这一行改为no
PasswordAuthentication no

修改完后,保存文件,重启SSH服务。

[root@xxxx ~]$ service sshd restart

最后,验证一下。如果和我一样直接登陆成功,恭喜你免密登陆成功了。

$ ssh root@razeen.me
Last login: Tue Sep 26 21:05:48 2017 from 218.82.26.206

Welcome to aliyun Elastic Compute Service!

[root@xxxx ~]#

修改SSH端口

修改SSH配置文件

我们常用的SSH端口是22,为了提高安全性,你可以将其修改到一个不常用的端口。

同样是修改/etc/ssh/sshd_config文件。 我们能看到

$ vi /etc/ssh/sshd_config

#
#Port 22   
#ListenAddress 0.0.0.0
#ListenAddress ::

# 例如 修改后
Port 54321

将Port注释删掉,修改22为你想要的端口号,注意不要与常用的端口后冲突。

然后重启SSH服务。

CentOS8 在你执行上面命令启动会报错,需要申明端口类型。

semanage port -a -t ssh_port_t -p tcp 54321

放行端口

当然这还不够,还需放行刚刚修改的SSH端口。

修改安全组

我用的阿里云只需要在在安全组规则中的公网入网方向添加该端口范围即可,如下图所示:

iptable 放行

如果你用的其他的也许还需修改iptable. 操作如下:

vi /etc/sysconfig/iptables

# 默认如下:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# 修改22为你的SSH端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 54321 -j ACCEPT
firewall 放行

如果你是Centos8, 开启了firewall,那可能需要修改firewall。

# 放行端口
firewall-cmd --zone=public --add-port=54321/tcp --permanent 
# 重启
firewall-cmd --reload

到这里,端口就愉快的修改完成了。 你可以这么登陆ssh -P 54321 root@xxx,如果你还觉得麻烦,下面还有更简单的方法。

SSH相关技巧

别名登陆

你还在为每次SSH, 要输入长长的用户名而烦恼吗?

你还在为每次SSH, 要带这长长的参数而烦恼吗?

你还在为每次SCP, 依然要带这长长的参数而烦恼吗?

你还在犹豫什么, 别名登陆给你解决烦恼。

首先你需要在你的~/.ssh目录下添加文件名为config的文件,文件内容如下:

# config
Host razeen                      # 别名
    HostName razeen.me           # 主机地址 (可以是IP)
    User root                    # 用户名
    Port 54321                   # ssh端口
    # IdentityFile ~/.ssh/id_rsa # 认证文件

接下来你直接使用$ ssh razeen就可以登陆服务器了,使用scp file.xxx razeen:/xxx/xxx就可你将本地的file.xxx文件拷到服务器/xxx/xxx目录下, 是不是方便了很多。

参考

[1] https://deepzz.com/post/how-to-setup-ssh-config.html#toc_4