Crates.io | autossh |
lib.rs | autossh |
version | 0.3.2 |
source | src |
created_at | 2024-11-08 08:45:19.410811 |
updated_at | 2024-11-29 08:38:32.705083 |
description | ssh server manager and login without password |
homepage | https://github.com/idhyt/autossh |
repository | https://github.com/idhyt/autossh |
max_upload_size | |
id | 1440993 |
size | 802,061 |
❯ autossh scp -i 1 -p path1=path2
如果path1
存在,则认为是从本地拷贝到远程服务器path2
,反之则是从远程服务器拷贝到本地。
ASKEY
环境变量,仅认证过程需要)默认情况下,会使用 $HOME/.ssh/id_rsa
作为登录密钥,如果该密钥设置的密码,登录时需要输入该密钥设置的密码,推荐该方式。
可按照如下操作使用无密码登录:
step1. 生成无密码登录的密钥
ssh-keygen -t rsa -b 2048 -C "autossh" -N "" -f ~/.config/autossh/autossh_key
step2. 将密钥路径写入配置文件 $HOME/.config/autossh/config.toml
[sshkey]
private = "/home/idhyt/.config/autossh/autossh_key"
public = "/home/idhyt/.config/autossh/autossh_key.pub"
后续登录就不会需要密码了,但请妥善保护好你的私钥文件!
如果在其他机器上使用,只需要将 $HOME/.config/autossh
文件夹拷贝到其他机器即可。
install by cargo
cargo install autossh
or build from source
git clone --depth=1 https://github.com/idhyt/autossh
cd autossh && cargo build --release
or cross build for other platform
╰─ ./xbuild
1) x86_64-unknown-linux-musl
2) aarch64-unknown-linux-musl
3) x86_64-apple-darwin
4) aarch64-apple-darwin
5) x86_64-pc-windows-gnu
Select the target platform number:
❯ autossh --help
ssh manager and auto login tool
Usage: autossh [COMMAND]
Commands:
list List the remote server
add Add the remote server
remove Remove the remote server by index
login Login the remote server by index
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
❯ autossh add -u idhyt -p password -i 1.2.3.4 -n ubuntu
+-------+--------+-------+---------+------+
| index | name | user | ip | port |
+=======+========+=======+=========+======+
| 1 | ubuntu | idhyt | 1.2.3.4 | 22 |
+-------+--------+-------+---------+------+
add other server info by -N/--note
option, like -N "expired at 2022-11-11"
note! the password need to be escaped if there are special characters in it. you can refer to the following which-characters-need-to-be-escaped-when-using-bash
❯ autossh rm -i 1
+-------+------+------+----+------+
| index | name | user | ip | port |
+-------+------+------+----+------+
remove multiple records by rm -i 1 2 3 ...
❯ autossh ls
+-------+--------+-------+---------+------+
| index | name | user | ip | port |
+=======+========+=======+=========+======+
| 1 | ubuntu | idhyt | 1.2.3.4 | 22 |
+-------+--------+-------+---------+------+
maybe scp
something, add option parameter -a/--all
to show password.
❯ autossh ls --all
+-------+--------+-------+---------+------+----------+
| index | name | user | ip | port | password |
+=======+========+=======+=========+======+==========+
| 1 | ubuntu | idhyt | 1.2.3.4 | 22 | password |
+-------+--------+-------+---------+------+----------+
❯ autossh login -i 1
(idhyt@1.2.3.4) Password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-156-generic x86_64)
authorize again by --auth
option, useful when the password is changed or copied to another machine
the record file is location $HOME/.config/autossh/config.toml
, you can change and backup it manually.
## 💥 security 💥
the password
fields is plaintext by default,
if you wish to encrypt it, import environment variables ASKEY
before use.
export ASKEY="SecretKey"
in bash,
set ASKEY="SecretKey"
in cmd and
$env:ASKEY="SecretKey"
in powershell.
❯ export ASKEY="protected"
❯ autossh add -u idhyt -p password -i 1.2.3.4 -n ubuntu
> autossh list --all
+-------+--------+-------+---------+------+----------+
| index | name | user | ip | port | password |
+=======+========+=======+=========+======+==========+
| 1 | ubuntu | idhyt | 1.2.3.4 | 22 | password |
+-------+--------+-------+---------+------+----------+
❯ cat ~/.config/autossh/config.toml | grep password
password = "IiaMr0ce4iKF5AvXf+rtFQ9mET0Ug4hLOoGeybzyOQx/lUvh"
## plugins / command
This is an experimental feature and may be refactored frequently.
the variables in the symbol {}
will be formatted as server information. do not change the variable name.
here a auto login ssh with password and run ps command by passh
in linux:
❯ autossh plugin add -n "ps" -p "passh" -c "{PLUGIN} -p '{PASSWORD}' ssh -p {PORT} {USER}@{IP} ps -a"
+--------+---------------+-----------------------------------------------------------------+
| name | path | command |
+========+===============+=================================================================+
| ps | passh | {PLUGIN} -p '{PASSWORD}' ssh -p {PORT} {USER}@{IP} ps -a |
+--------+---------------+-----------------------------------------------------------------+
❯ autossh plugin run -n "ps" -i 1
[2024-06-25T08:37:29Z INFO autossh::cmd::plugin] run command output:
(idhyt@1.2.3.4) Password:
PID TTY TIME CMD
3588 pts/1 00:00:00 zsh
3590 pts/1 00:00:05 zsh
...
example in windows, use putty
to auto login ssh with password:
D:\Downloads\autossh>autossh.exe plugin add -n "login" -p "D:\Downloads\autossh\putty.exe" -c "{PLUGIN} -ssh {USER}@{IP} -P {PORT} -pw {PASSWORD}"
+-------+--------------------------------+----------------------------------------------------+
| name | path | command |
+=======+================================+====================================================+
| login | D:\Downloads\autossh\putty.exe | {PLUGIN} -ssh {USER}@{IP} -P {PORT} -pw {PASSWORD} |
+-------+--------------------------------+----------------------------------------------------+
D:\Downloads\autossh>autossh.exe plugin run -i 1 -n "login"
... you will see the login window ...