使用密钥访问远程主机

从某些云服务商处购买的主机,一般会给你root密码访问,如果在自己的电脑上经常要登录,每次都输入密码不是很方便。其实可以使用密钥访问。

使用密钥SSH登录

为了为远程主机生成SSH密钥对,你可以在本地机器上使用ssh-keygen命令。以下是生成SSH密钥对的步骤:

  1. 在本地机器上生成SSH密钥对:

    打开终端(Linux或macOS)或命令提示符(Windows),然后运行以下命令:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    在这个命令中,-t rsa指定使用RSA算法生成密钥,-b 4096指定密钥长度为4096位,-C选项用来添加注释(通常是你的电子邮件地址,用于标识密钥)。

    在运行命令后,它会要求你指定保存密钥的文件路径和文件名。如果不输入任何路径,密钥将会保存在默认路径(通常是~/.ssh/id_rsa)。

    然后,它会要求你输入一个密码(可选)。密码用于加密私钥文件,增加安全性。

  2. 将公钥传输到远程主机:

    生成密钥后,你会在指定的路径下找到两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。将公钥文件(id_rsa.pub)的内容复制到远程主机的~/.ssh/authorized_keys文件中。你可以使用ssh-copy-id命令来方便地将公钥复制到远程主机:

    ssh-copy-id root@REMOTE_HOST
    

    (这儿以root用户为例,这会将该公钥copy到root用户的相应目录中,为了安全建议使用其他用户)

    请将REMOTE_HOST替换为你的远程主机的IP地址或域名。该命令执行时会要求你输入用户的密码。

    如果你手动复制,确保将公钥内容添加到远程主机~/.ssh/authorized_keys文件的末尾,并且确保该文件的权限设置为600(只有所有者可读写):

    chmod 600 ~/.ssh/authorized_keys
    

    确保~/.ssh目录的权限为700(只有所有者可读写执行):

    chmod 700 ~/.ssh
    

现在,你应该可以使用SSH密钥进行与远程主机的安全通信,直接使用 ssh root@REMOTE_HOST即可免密码登录到远程主机。

另外,如果你之前已经生成了密钥对,例如提交到git时使用,那可以直接使用已有的密钥对。生成密钥对时使用的邮箱和远程主机的用户没有直接关系,关键是将公钥拷贝到那个用户的.ssh目录下面。

使用密钥进行rsync同步

同样,使用公钥可以方便的将文件rsync同步到远程主机。以下是一个示例脚本:

#!/bin/bash

# 源目录
SOURCE_DIR="/users/my/test/files"

# 目标主机地址
REMOTE_HOST="xx.xx.xx.xx"
# 目标目录
REMOTE_DIR="/var/www/html/myblog"
# 目标用户名
REMOTE_USER="root"

# 使用rsync命令进行同步,-a 参数表示以归档模式同步,-r 表示递归同步
rsync -ar --progress --delete -e "ssh -i ~/.ssh/id_rsa" $SOURCE_DIR/* $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR

echo "Files copied successfully to $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

### 配置 VS Code 通过 SSH 密钥连接到远程服务器 为了使 Visual Studio Code (VS Code) 能够通过 SSH 连接到远程服务器,需要完成以下几个方面的设置: #### 1. 创建并配置 SSH 密钥对 创建一个新的 SSH 密钥对以便于无密码验证是非常重要的。这可以通过 `ssh-keygen` 命令实现[^1]。 ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 上述命令将会生成一个 RSA 类型的密钥对,并将其存储在默认路径下(通常是 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub`)。如果希望使用不同的文件名,则可以在提示时指定其他名称。 接着,将公钥复制至目标主机上。可以手动编辑 `.ssh/authorized_keys` 文件并将公钥字符串追加进去[^2],或者利用更简便的方式——运行以下命令自动完成此操作: ```bash ssh-copy-id user@remote_host ``` 对于 Windows 用户而言,在 Git Bash 或 WSL 中执行这些指令同样有效;不过需要注意的是,如果你正在使用非标准私钥位置的话,可能还需要启动代理程序来加载该特定身份认证文件[^3]。 #### 2. 安装 Remote Development 插件扩展包 打开 VS Code 的市场页面搜索 “Remote – SSH”,安装由 Microsoft 提供的官方插件集合【Remote Development】。这个工具集包含了支持多种开发场景的功能模块,其中包括基于 SSH 协议访问远端资源的能力。 #### 3. 编辑配置文件以定义远程连接参数 一旦成功建立了本地机器与目的地址之间的信任关系之后,就需要告诉 VS Code 如何找到那个地方以及采用何种方式登录过去。为此需修改用户目录下的某个隐藏子目录中的特殊文档 —— `~/.ssh/config`: ```plaintext Host myserver HostName example.com User username IdentityFile ~/.ssh/my_custom_key ``` 在此示例中,“myserver” 是自定义别名;每当尝试建立与此标签匹配的新会话时,实际使用的 IP 地址将是 'example.com' ,而用户名则设定了为 'username' 。最后一点值得注意的地方在于指明了哪个具体的 PEM 格式的证书应该被用来证明我们的身份合法性[^4]。 #### 4. 启动新的窗口指向所选节点 现在回到图形界面内的菜单栏选项里寻找对应入口:“View -> Command Palette...”。输入框内键入关键词“Connect to Host…”触发关联动作列表展示出来。从中挑选刚才预先设定好的条目即可开启专属的工作区环境实例化过程。 --- ### 注意事项 SSH(或称为 Secure Shell),是一种网络协议,旨在提供一种安全的方法来进行客户端和服务端之间交互式命令行会话以及其他形式的数据传输活动。当涉及到 Ubuntu Server 系统日常运维管理工作当中去的时候,往往离不开借助此类技术手段达成高效便捷的目的[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

n5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值