ssh 可以设置常用地登录吗?

2021-05-22 10:18:11 +08:00
 chenqh

如题,想 qq 常用地那样?

2736 次点击
所在节点    Python
19 条回复
cherbim
2021-05-22 10:21:06 +08:00
只允许指定 ip 登录,在 sshd_config 配置文件里,allowusers
wzhpro
2021-05-22 10:31:36 +08:00
没必要,证书认证+动态验证码 已经够强了
toaruScar
2021-05-22 10:39:18 +08:00
可以,自定义 PAM 模块就行了

https://superuser.com/a/792842/325668
chenqh
2021-05-22 10:41:27 +08:00
知道怎么做了,但是不会搞 pam,还是算了把,不做了
yanqiyu
2021-05-22 10:43:03 +08:00
其实没必要用 pam,直接防火墙拦截掉除了常用 ip 之外的 port22 入站就行
chenqh
2021-05-22 10:47:53 +08:00
@yanqiyu 关键 IP 会变呀
Jirajine
2021-05-22 11:37:45 +08:00
证书登录可以用 oauth,比如用 google 帐号授权登录。
https://smallstep.com/blog/diy-single-sign-on-for-ssh/
ronman
2021-05-22 15:22:07 +08:00
证书+禁 root+fail2ban
vhus
2021-05-22 19:27:07 +08:00
@ronman 支持!
uncat
2021-05-22 22:44:56 +08:00
本地维护一份 ~/.ssh/config 配置. 将 git 仓库中的 config 文件软链到 ~/.ssh/config. 然后 config 就可以版本控制了.
然后. 用如下的配置模板为每个项目的服务器添加一份配置.

Host project-1
User <username1>
HostName <IP1>
ProxyJump <username2>@<IP2>

project-1 是一个 nickname.
<username1> 是登陆服务器的地址.
<IP1> 是服务器的 IP.
<username2> 是 ssh 登陆跳转服务器的地址.
<IP2> 是跳转服务器的 IP.
添加了这样的配置后. 登陆服务器. 以往的命令: ssh <username1>@<IP1> 就会变成 ssh project-1. 这里面 <username2>@<IP2> 对应的跳转服务器的作用是: 在你每次 ssh project-1 时, 流量都会先发给 <username2>@<IP2> 对应的跳转服务器, 由跳转服务器发出. 这样, 你所有的 ssh 登陆请求就会有一个固定的来源 IP 了. 这个 IP 就是 IP2(跳转服务器的 IP). 一般云服务商都一提供网络安全组. 将 22 端口设为只允许 IP 登陆即可.

最终你的 git 仓库中的 config 文件会变成下面的形式:

Host project-1
User <username1>
HostName <IP1>
ProxyJump <username2>@<IP2>

Host project-3
User <username3>
HostName <IP3>
ProxyJump <username2>@<IP2>

Host project-4
User <username4>
HostName <IP4>
ProxyJump <username2>@<IP2>

Host project-5
User <username5>
HostName <IP5>
ProxyJump <username2>@<IP2>

# 类似上面的形式. 每次有新的项目. 就添加一个块. 然后推送到远程仓库. 让其他小伙伴拉取这个仓库. 添加软链接到 ~/.ssh/config 即可.
uncat
2021-05-22 22:46:27 +08:00
> <username1> 是登陆服务器的地址.

纠正为: <username1> 是登陆服务器的用户名
uncat
2021-05-22 22:47:12 +08:00
> <username2> 是 ssh 登陆跳转服务器的地址.

纠正为: <username2> 是 ssh 登陆跳转服务器的用户名.
uncat
2021-05-22 22:48:09 +08:00
> 将 22 端口设为只允许 IP 登陆即可.

纠正为: 将 22 端口设为只允许来自跳转服务器的 IP 登陆即可.
zxwy
2021-05-23 00:03:52 +08:00
借楼问下大家 vps 必须走代理才能连接 ssh 有解吗
lekai63
2021-05-23 07:26:34 +08:00
@zxwy 在楼上说的 config 文件的块里写 proxycommand

proxy 小软件可以是 connect.exe (好像是 git 自带?) or nc
uncat
2021-05-23 07:31:42 +08:00
@zxwy 两种可能.
1. 线路拥堵
2. 端口被封
zxwy
2021-05-23 11:01:24 +08:00
@lekai63 大佬可否说下具体操作或者给个教程,只是喜欢折腾却什么也不懂的小白
zxwy
2021-05-23 11:02:20 +08:00
@uncat 好多天了,查询端口也正常的,ping 也通,节点也正常使用
lekai63
2021-05-23 14:17:50 +08:00
@zxwy 这是我的 C:\users\lekai\.ssh\config 文件中的其中一个块

Host xx
HostName xx.quarkmed.com
User user
IdentityFile ~/.ssh/vpskey/vpskey
Port 10086
ProxyCommand C:\Users\lekai\.ssh\connect.exe -S 127.0.0.1:7890 %h %p

你需要搜索的关键词是:
ssh config proxycommand

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/778496

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX