为新开的vps配置ssh+密码登录,适合甲骨文云Oracle cloud VM实例等

很多云厂商默认关闭了 ssh 登录功能,像甲骨文 Oracle cloud 和谷歌 gcp,不过 gcp 还好,在元数据可设置全局 ssh 密钥,但是甲骨文云就很离谱,不但没有用户预设 ssh 密钥功能,而且配置 ssh 登录过程还麻烦的一比…,不过好在甲骨文提供了启动脚本 (cloud-init),即在创建 mv 实例第一次开机时执行启动脚本。

在这里插入图片描述

有了这个功能,我们就可以在首次开机配置 ssh 相关设置。

注意,甲骨文云管这叫 cloud-init,gcp 管这叫自动化,vultr 管这叫 Startup Script。各家的命名不一样,但是功能都是相同的,即开机启动脚本。

基本原理
原理就是在新实例开机的时候执行脚本,自动修改目录下 /etc/ssh/sshd_config 的这个 ssh 配置文件,修改 PermitRootLogin 和 PasswordAuthentication 参数,并且顺便修改 root 密码。

cloud-init 脚本内容
cloud-init 开机脚本在高级选项这一栏中。

在这里插入图片描述

debian / ubuntu
精准查找,适合 debian 与 ubuntu 系统。

其中 123456789 是你需要设置的 root 密码。

#!/bin/bash
echo root:123456789 |sudo chpasswd root
sudo sed -i ‘s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g’ /etc/ssh/sshd_config;
sudo sed -i ‘s/PasswordAuthentication no/PasswordAuthentication yes/g’ /etc/ssh/sshd_config;
sudo service sshd restart

centos
精准查找,适合 centos 系统。

其中 123456789 是你需要设置的 root 密码。

#!/bin/bash
echo root:123456789 |sudo chpasswd root
sudo sed -i ‘s/PermitRootLogin no/PermitRootLogin yes/g’ /etc/ssh/sshd_config;
sudo sed -i ‘s/PasswordAuthentication no/PasswordAuthentication yes/g’ /etc/ssh/sshd_config;
sudo service sshd restart

通用脚本 (模糊查找)
模糊查找,理论上适合大部分 Linux 操作系统。

其中 123456789 是你需要设置的 root 密码。

#!/bin/bash
echo root:123456789 |sudo chpasswd root
sudo sed -i ‘s/^#?PermitRootLogin./PermitRootLogin yes/g’ /etc/ssh/sshd_config;
sudo sed -i 's/^#?PasswordAuthentication.
/PasswordAuthentication yes/g’ /etc/ssh/sshd_config;
sudo service sshd restart

作者:i_木木木木木
链接:https://www.jianshu.com/p/bf985a7458c0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

### Linux SSH密码登录配置教程 #### 创建SSH密钥对 为了实现免密码登录,首先需要在客户端机器上生成一对SSH密钥。这可以通过`ssh-keygen`命令完成。该工具能够生成适用于不同版本SSH协议所需的RSA或DSA类型的密钥[^1]。 ```bash ssh-b 4096 -C "your_email@example.com" ``` 上述命令会提示用户选择保存密钥的位置,默认情况下为`~/.ssh/id_rsa`及其对应的公钥文件`id_rsa.pub`;还会询问是否要设置访问私钥时使用的密码短语(passphrase),如果希望完全无交互式的自动化过程,则可以直接回车跳过此步。 #### 将公钥复制到远程主机 接着要把产生的公钥发送给目标VPS或其他Linux服务器。利用`ssh-copy-id`指令能简化这一操作,只需提供必要的参数即可: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host -p port_number ``` 这里假设用户的主目录下存在`.ssh`子目录,并且其中包含了之前创建好的`id_rsa.pub`文件作为源公钥路径。同时指定了用户名、远端地址以及可能不同于默认22号的服务监听端口[^2]。 #### 修改服务端SSHD配置允许密钥认证 为了让服务器接受基于密钥的身份验证请求,需调整其上的OpenSSH守护进程配置。通常涉及编辑位于/etc/ssh/sshd_config中的全局设定项来启相应的选项: ```bash sudo nano /etc/ssh/sshd_config ``` 找到下面两行并确保它们未被注释掉而且值设为yes: - `PubkeyAuthentication yes` - `PasswordAuthentication no` (可选) 更改完成后记得重启sshd使改动生效: ```bash sudo systemctl restart sshd ``` 此时应该已经成功设置了从特定客户机向指定服务器发起无需人工干预的连接尝试[^4]。 --- 关于`ssh-keygen -R`命令的应用场景主要是当遇到由于网络原因或者其他因素造成已知hosts条目污染的情况——即本地缓存里记录着错误的目标IP与指纹关联关系而导致无法正常建立的安全通道。这时就可以借助这个选项清除对应条目的历史数据从而解决问题。 ```bash ssh-keygen -R hostname_or_ip_address ``` 这条命令的作用是从当前用户的known_hosts文件中移除所有匹配给定名称或地址的相关条目,以便下次再次握手时不受到旧有信息干扰而顺利完成身份校验流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值