mirror of
https://github.com/appleboy/drone-ssh.git
synced 2025-09-13 20:00:10 +08:00
用作 cicd/ssh-action 仓库基础组件
![]() Before changes: ```sh $ # This is what `keychain --eval --inherit any` does on Ubuntu. $ # https://www.funtoo.org/Keychain $ export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh $ go build example/ssh/ssh.go $ ./ssh panic: Can't run remote command: ssh: handshake failed: agent: client error: write unix @->/run/user/1000/keyring/ssh: use of closed network connection goroutine 1 [running]: main.main() /home/wsh/go/src/github.com/wataash/easyssh-proxy/example/ssh/ssh.go:32 +0x2d3 ``` Error message `write unix @->/run/user/1000/keyring/ssh: use of closed network connection` comes from [`Write()`](https://github.com/golang/crypto/blob/2b6c08872f4/ssh/agent/client.go#L277) where `SSH_AUTH_SOCK` is already `Close()`ed. After changes: ```sh $ export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh $ go build example/ssh/ssh.go $ ./ssh github.com/wataash/easyssh-proxy command-line-arguments don is : true stdout is : total 640 drwxr-xr-x 68 wsh wsh 4096 10月 16 21:25 . drwxr-xr-x 3 root root 4096 9月 12 08:39 .. drwxr-xr-x 2 wsh wsh 4096 9月 20 20:48 .android ... -rw-rw-r-- 1 wsh wsh 202 9月 12 19:51 .zshrc ; stderr is : Identity added: /home/wsh/.ssh/id_rsa (/home/wsh/.ssh/id_rsa) Identity added: /home/wsh/.ssh/id_ed25519 (wsh@wsh9b) ``` https://github.com/appleboy/drone-ssh/commit/9b697286281 |
||
---|---|---|
screenshot | ||
tests | ||
vendor | ||
.drone.yml | ||
.editorconfig | ||
.gitignore | ||
Dockerfile | ||
Dockerfile.armhf | ||
DOCS.md | ||
LICENSE | ||
main.go | ||
Makefile | ||
plugin_test.go | ||
plugin.go | ||
README.md | ||
ssh.png |

drone-ssh
Drone plugin to execute commands on a remote host through SSH. For the usage information and a listing of the available options please take a look at the docs.
Note: Please update your image config path to appleboy/drone-ssh
for drone. plugins/ssh
is no longer maintained.
Build
Build the binary with the following commands:
go build
go test
Docker
Build the docker image with the following commands:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo
docker build -t appleboy/drone-ssh .
Please note incorrectly building the image for the correct x64 linux and with GCO disabled will result in an error when running the Docker image:
docker: Error response from daemon: Container command
'/bin/drone-ssh' not found or does not exist..
Usage
Execute from the working directory:
docker run --rm \
-e PLUGIN_HOST=foo.com \
-e PLUGIN_USERNAME=root \
-e PLUGIN_KEY="$(cat ${HOME}/.ssh/id_rsa)" \
-e PLUGIN_SCRIPT=whoami \
-v $(pwd):$(pwd) \
-w $(pwd) \
appleboy/drone-ssh
Mount key from file path
Please make sure that enable the trusted
mode in project setting.
Mount private key in volumes
setting of .drone.yml
config
pipeline:
ssh:
image: appleboy/drone-ssh
host: xxxxx.com
username: deploy
+ volumes:
+ - /root/drone_rsa:/root/ssh/drone_rsa
key_path: /root/ssh/drone_rsa
script:
- echo "test ssh"
See the detail of issue comment.