我有一个问题与我的github行动,我不能连接SSH我这样做:
-
使用用户adam创建ssh密钥
-
将公钥拷贝到/root/.ssh/authorized_keys
-
用公钥在github中创建一个secret
-
创建script.sh到/home/adam/
-
chmod 600 .ssh目录
但是我得到了这个错误:
执行ssh -o StrictHostKeyChecking=no
警告:身份文件/home/adam/。ssh/id_rsa not accessible:没有这样的文件或目录。警告:已将"我的Ip"(ED25519)永久添加到已知主机列表中。adam@my Ip:权限被拒绝(公钥、密码、键盘交互)。错误:进程已完成,退出码为255.
这是我的代码:
name: Run script on VPS
on:
push:
branches: [master]
jobs:
run-script:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run script
env:
SSH_PRIVATE_KEY: ${{ secrets.VPS_SSH_PUBLIC_KEY }}
run: |
ssh -o StrictHostKeyChecking=no
-o PasswordAuthentication=no
-i /home/adam/.ssh/id_rsa
adam@myip
"bash /home/adam/script.sh"
有人能帮我修一下吗?
- 试图验证id_rsa和id_rsa的路径。pub是正确的
- 看到两个文件都在那里,并在 中使用good键
- 尝试重新创建ssh密钥多次
- 尝试用不同的方式访问ssh
- 验证conf打开ssh接受rsa并添加
CASignatureAlgorithms +ssh-rsa
- restart service ssh
将公钥复制到/root/.ssh/authorized_keys
在要SSH到的远程目标服务器上。
这意味着您要SSH到root:root@remoteServer:...
.
而不是adam@...
而不是依赖于本地路径不存在于GitHub运行器(除非可能是自托管),你可能想使用GitHub动作"appleboy/ssh-action
">
- name: ssh key passphrase
uses: appleboy/ssh-action@v0.1.9
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
passphrase: ${{ secrets.PASSPHRASE }}
script: |
whoami
ls -al
如果您的SSH私钥没有密码保护,请删除passphrase: ${{ secrets.PASSPHRASE }}
行。
这样,您就不需要创建具有相应权限的.ssh/
文件夹。这个动作会为你处理好这一切。
谢谢你的回答我不知道到底是什么问题,但我认为它与ssh密钥有关
我通过使用密码来修复我的代码,密码存储在github的秘密中,而不是ssh密钥
name: Deploy 🚀
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v2
with:
node-version: '16.x'
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
- name: SSH Deploy
run: |
sshpass -p ${{ secrets.PSWD }} ssh -o StrictHostKeyChecking=no -p 22 ${{ secrets.USER}}@${{ secrets.VPS_IP }} 'cd /home/adam && ./deploy.sh'
env:
SSHPASS: ${{ secrets.PSWD }}