可连接远程主机情况下添加私钥到远程主机

本文介绍了一种通过SSH私钥实现远程主机授权的方法,包括创建SSH目录、生成私钥、添加公钥到远程主机的authorized_keys文件,并设置权限。

一句话添加私钥到远程主机,适用于可执行远程主机命令场景:例如,通过http post命令将命令post到远程主机并执行
在这里插入图片描述

ssh_dir='/home/supdev/.ssh';auth_file=${ssh_dir}/authorized_keys;auth_key='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArfaZwds4mExtyNGPNao/tzzXrbUGuzwYJYvK0a6uwcbgmRJ7i6fuJC/QeMRMlalP5N6ZAOoMS4U3J54Z1ejm/SNq0n1JXqELL+ipjc2+BlnGITgh5+eKn9r//fai8F4jZtvDz5+0hv1JVQU561XsnacOtAn1J3ZhiuJ+G12gS/9xcPH0x3iR7+EmN182OmXGEuH5D2cPCe2DsGdYLF1Avia8V48SiXaZZx5smtZnGU4hzB7VgteMalYkdI+tQRQKk6h1VMAsYz0DoaAr6j5YFUOLtqF0M+JHQVrzecR89KnI/CjGT/YgMezOXCceJ6p1jTBuDIdJfFfJ0aagFA7t9Q== rsa 2048-040318';if test -d ${ssh_dir};then if test -f ${auth_file}; then echo 'key exists'; echo ${auth_key}>>${auth_file};echo 'add auth key success';else echo 'key not exists';fi;else ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa; echo ${auth_key}>>${auth_file}; chmod 600 ${auth_file}; fi;

拆解后代码如下:

#!/usr/bin/env bash

ssh_dir='/home/supdev/.ssh';
auth_file=${ssh_dir}/authorized_keys;
auth_key='ssh-rsa AAAAB4NzaC1yc2EAAAABIwAAAQEArfaZwds4mExtyNGPNao/tzzXrbUGuzwYJYvK0a6uwcbgmRJ7i6fuJC/QeMRMlalP5N6ZAOoMS4U3J54Z1ejm/SNq0n1JXqELL+ipjc2+BlnGITgh5+eKn9r//fai8F4jZtvDz5+0hv1JVQU561XsnacOtAn1J3ZhiuJ+G12gS/9xcPH0x3iR7+EmN182OmXGEuH5D2cPCe2DsGdYLF1Avia8V48SiXaZZx5smtZnGU4hzB7VgteMalYkdI+tQRQKk6h1VMAsYz0DoaAr6j5YFUOLtqF0M+JHQVrzecR89KnI/CjGT/YgMezOXCceJ6p1jTBuDIdJfFfJ0aagFA7t9Q== rsa 2048-040318';

if test -d ${ssh_dir};then
    if test -f ${auth_file};then
        echo 'key exists'; echo ${auth_key}>>${auth_file};
        echo 'add auth key success';
    else
        echo 'key not exists';
    fi;
else
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;
    echo ${auth_key}>>${auth_file};
    chmod 600 ${auth_file};
fi;

{"command":"ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;ssh_dir='/home/supdev/.ssh';auth_file=${ssh_dir}/authorized_keys;auth_key='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArfSZwds4mExtyNGPNao/tzzXrbUGuzwYJYvK0a6uwcbgmRJ7i6fuJC/QeMRMlalP5N6ZAOoMS4U3J54Z1ejm/SNq0n1JXqELL+ipjc2+BlnGITgh5+eKn9r//fai8F4jZtvDz5+0hv1JVQU561XsnacOtAn1J3ZhiuJ+G12gS/9xcPH0x3iR7+EmN182OmXGEuH5D2cPCe2DsGdYLF1Avia8V48SiXaZZx5smtZnGU4hzB7VgteMalYkdI+tQRQKk6h1VMAsYz0DoaAr6j5YFUOLtqF0M+JHQVrzecR89KnI/CjGT/YgMezOXCceJ6p1jTBuDIdJfFfJ0aagFA7t9Q== rsa 2048-040318';mkdir -p ${ssh_dir};echo ${auth_key}>>${auth_file};chmod 600 ${auth_file};ls ${ssh_dir};chown -R supdev:supdev ${ssh_dir}/*;ls -l ${ssh_dir}"}
<think>嗯,用户想知道如何在VSCode中自定义私钥文件的存放位置来连接远程主机。首先,我需要回忆一下VSCode的远程SSH配置方法。根据之前的引用,用户提到过在配置文件中使用IdentityFile指令来指定私钥路径,比如引用[3]中的例子。这说明在SSH配置文件中设置IdentityFile是关键步骤。 接下来,我需要确认用户是否需要修改全局的SSH配置文件还是仅在VSCode的配置中指定。根据引用[4],用户可能在VSCode的Remote-SSH设置里直接编辑配置文件,所以应该指导用户编辑.ssh/config文件,或者在VSCode的SSH配置文件中添加Host条目,并指定IdentityFile参数。 然后,用户可能遇到的问题包括路径格式的问题,比如Windows中使用反斜杠需要转义,或者路径中有空格需要引号包裹。例如,引用[3]中的路径是C:\Users\用户名\.ssh/id_rsa,这里混合了反斜杠和正斜杠,可能需要统一。同时,需要提醒用户确保私钥文件的权限正确,避免因为权限过松导致SSH拒绝使用,这在Linux系统中常见,但Windows下可能也需要检查。 另外,用户可能还想知道如何测试私钥是否有效,可以引用[1]中的方法,使用命令行ssh -i来测试连接,确保私钥正确后再在VSCode中使用。同时,免密登录的配置可能需要将公钥放到服务器的authorized_keys文件中,如引用[2]和[3]所述,这部分虽然用户的问题是关于私钥路径,但可能需要一并考虑。 最后,应该总结步骤,分点说明如何编辑配置文件、注意事项以及验证方法,确保用户能够逐步操作。还要提醒用户路径中的特殊字符处理和文件权限问题,避免常见错误。同时,生成的相关问题可以涉及如何测试私钥有效性、配置多主机、权限设置等,帮助用户扩展知识。</think>### 如何在VSCode中自定义私钥路径连接远程主机 #### 配置步骤 1. **打开VSCode的SSH配置文件** - 在VSCode中安装 **Remote-SSH** 扩展 - 按 `F1` 打开命令面板,输入 `Remote-SSH: Open SSH Configuration File`,选择用户级或全局配置文件(如 `C:\Users\你的用户名\.ssh\config`) 2. **添加自定义私钥路径** ```plaintext Host 自定义主机名(如my_server) HostName 服务器IP或域名 User 用户名 IdentityFile "自定义私钥绝对路径" # 路径含空格需加引号 ``` 示例(Windows): ```plaintext Host alientek HostName 192.168.1.100 User alientek IdentityFile D:\MyKeys\custom_rsa # 自定义路径[^3] ``` 3. **验证配置有效性** ```bash ssh -i D:\MyKeys\custom_rsa user@host # 命令行测试连接[^1] ``` #### 关键注意事项 - **路径格式规范** Windows系统需使用双反斜杠或正斜杠: `IdentityFile C:\\Users\\name\\key` 或 `IdentityFile C:/Users/name/key` - **文件权限控制** Linux/macOS需设置私钥文件权限为600: ```bash chmod 600 ~/.ssh/custom_rsa ``` - **多主机配置** 可通过不同`Host`区块管理多组密钥: ```plaintext Host serverA HostName 10.0.0.1 IdentityFile ~/keys/key_a Host serverB HostName 10.0.0.2 IdentityFile ~/keys/key_b ``` #### 配置验证流程 ```mermaid graph TD A[编辑SSH配置文件] --> B[保存配置文件] B --> C[终端测试连接] C --> D{连接成功?} D -->|是| E[VSCode选择该主机连接] D -->|否| F[检查路径/权限/密钥对] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值