clion远程开发
简要概括:
建立 SFTP 通讯,创建远程目录与本地目录的映射文件夹,就可以把本机文件夹中的文件用鼠标右键选中上全传,打开自动同步功能,后面更改文件就可以自动同步文件了。
一.新建SFTP远程链接服务
file→settings→Deployment
+选择 SFTP 输入名称 ubuntu old 6楼 3轮
1.右边 connection
输入ip与密码勾选永久保存。 Test Connection测试网络通讯clion远程开发
【直接用远程机的帐号密码登入,可以选择不用ssh链接】
二.右边 Mappings 映射的文件夹
选择映射的文件夹目录:
local path 本机文件目录
/home/sukai/workspace/workspace_ros_car_noetic/src/trilateration
Deployment path 远程目录:
/home/shi/PMRobot/src/trilateration
三.右边 Excluded Path 排除不需要更新的文件夹
local path 排除本机文件目录。
Deployment path 排除远程目录。
四.自动同步 (开启这个功能后与vs code一样,不需要手动同步了)
五.手动同步(拉取或推上去)
批量上传
同步远程机与本机的系统时间
系统时间一致才能很好的使用远程开发
脚本:
#!/bin/bash
#本地机安装 sudo apt-get install sshpass
# 这个脚本可以设置时间
# 远程机器的用户名、密码和IP地址
REMOTE_USER="sukai"
REMOTE_PASSWORD="sukai123456"
REMOTE_HOST="10.9.162.109"# 获取本机时间
LOCAL_TIME=$(date +"%Y-%m-%d %H:%M:%S")# 打印本机时间
echo "Local time: $LOCAL_TIME"# 在远程机器上设置时间
sshpass -p $REMOTE_PASSWORD ssh -o StrictHostKeyChecking=no $REMOTE_USER@$REMOTE_HOST "echo $REMOTE_PASSWORD | sudo -S date -s \"$LOCAL_TIME\""# 检查远程机器的时间是否已更新
sshpass -p $REMOTE_PASSWORD ssh -o StrictHostKeyChecking=no $REMOTE_USER@$REMOTE_HOST "date"
ubuntu 中制作ssh密钥
在Ubuntu中制作SSH密钥对,你可以使用ssh-keygen命令。以下是步骤和示例代码:
打开终端。
输入 ssh-keygen 命令并按回车。你可以接受默认选项或指定密钥文件的路径和文件名。
输入密钥的密码短语(passphrase),或者为空(直接按回车),这取决于你是否想要为密钥添加密码。
ssh-keygen
执行上述命令后,你将在家目录的.ssh文件夹中获得两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。
cat id_rsa.pub 打印出公钥
如果你想要指定密钥文件的位置和文件名,可以这样做:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/my_ssh_key
这里-t指定密钥类型,-b指定密钥长度,-C添加注释(通常是你的邮箱),而-f指定密钥文件的路径和文件名。
完成后,你可以将公钥~/.ssh/my_ssh_key.pub 的内容添加到远程服务器的~/.ssh/authorized_keys文件中,以便进行无密码SSH登录。
如果你的本机上还没有 ~/.ssh/authorized_keys
文件,你可以创建它。以下是具体步骤:
确保本机上存在 ~/.ssh
目录
首先,确保本机上有 ~/.ssh
目录。如果没有,请创建它:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
创建 authorized_keys
文件
在 ~/.ssh
目录中创建 authorized_keys
文件
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
将远程机的公钥添加到 authorized_keys
文件中
接下来,将远程机的公钥添加到 authorized_keys
文件中。
示例步骤:
在远程机上生成 SSH 密钥对(如果还没有生成):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
复制远程机的公钥:
cat ~/.ssh/id_rsa.pub
复制输出的公钥内容。
将远程机的公钥添加到本机的 authorized_keys
文件中:
echo "远程机的公钥内容" >> ~/.ssh/authorized_keys
替换 "远程机的公钥内容"
为从远程机上复制的公钥内容。
确保正确的权限设置
确保 ~/.ssh
目录及其内容具有正确的权限设置:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
测试 SSH 连接
现在你可以从远程机使用 SSH 密钥认证连接到本机,而无需输入密码。
在远程机上执行以下命令
ssh your_local_user@your_local_host
替换 your_local_user
和 your_local_host
为本机的用户名和IP地址或主机名。如果一切顺利,你应该能够直接连接到本机而无需输入密码。
完整脚本示例
安装 sshpass
:
sudo apt-get install sshpass
可以将这些步骤写成一个脚本来简化操作。以下是一个示例脚本:
#!/bin/bash#本地机安装 sudo apt-get install sshpass
# 这个脚本可以用
# 定义远程主机信息
REMOTE_USER="sukai"
REMOTE_PASS="sukai123456"
REMOTE_HOST="10.9.162.109"# 使用sshpass登录远程主机并获取其公钥
REMOTE_PUB_KEY=$(sshpass -p "${REMOTE_PASS}" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'cat ~/.ssh/id_rsa.pub')# 检查是否成功获取公钥
if [ -n "$REMOTE_PUB_KEY" ]; thenecho "Successfully retrieved public key from remote host."# 打印公钥echo "Public Key:"echo "${REMOTE_PUB_KEY}"# 追加公钥到本地的 authorized_keys 文件中echo "${REMOTE_PUB_KEY}" >> ~/.ssh/authorized_keysecho "Public key added to local authorized_keys."
elseecho "Failed to retrieve the public key."
fi
修改脚本的地方:
- REMOTE_PASSWORD: 将
your_remote_password
替换为你远程机器的密码。
脚本说明:
- sshpass: 这是一个用于通过非交互式 SSH 登录的工具,它允许你在脚本中提供密码。
- ssh-keygen: 在远程机上生成 SSH 密钥对,然后将公钥内容获取回来。
- REMOTE_PUB_KEY: 通过
sshpass
执行 SSH 命令来获取远程机器的公钥。 - echo "$REMOTE_PUB_KEY" >> ~/.ssh/authorized_keys: 将远程机器的公钥追加写入本机的
authorized_keys
文件。 - sshpass -p $REMOTE_PASSWORD ssh $REMOTE_USER@$REMOTE_HOST: 最后一行测试 SSH 连接,使用密码验证登录到远程机器。
使用该脚本:
-
修改脚本:将
your_remote_user
、your_remote_host
和your_remote_password
替换为实际的远程机器用户名、IP 地址或主机名以及密码。 -
保存脚本:将上述脚本保存为
add_remote_key_with_password.sh
文件。 -
使脚本可执行:
chmod +x add_remote_key_with_password.sh
运行脚本:
./add_remote_key_with_password.sh
通过这些步骤,你可以将远程机器的公钥添加到本机的 authorized_keys
文件中,实现使用帐号密码进行 SSH 连接。