scp 文件传输

上传到远端

上传目录:

1
scp -r ./util/ 用户名@192.168.1.65:/home/wwwroot/limesurvey_back/util/

上传文件:

1
scp ./util.js 用户名@192.168.1.65:/home/wwwroot/limesurvey_back/scp/

远端下载

1
scp [-r] 用户名@192.168.1.65:/share/webCompileOut.sql ./

如果是目录拷贝要加 -r 参数,用户名可选,如果省略用户名,默认为终端的用户名。

SSH 免密登录

  1. 先执行 su 用户名 切换到想要免密的账户
  2. 在你的主控方机器上使用 ssh-keygen 命令创建公钥,使用 ssh-keygen -t rsa 来创建,程序会询问存放目录,如果不需要修改(建议不修改,会放在 ~/ 路径下),直接回车几次即可
  3. 将主控方 ~/.ssh 目录下 id_rsa.pub 文件拷贝到受控机器的 ~/.ssh 目录中,然后操作受控方将文件内容导入到 ~/.ssh/authorized_keys 文件
1
2
3
4
5
# 主控方:
scp ~/.ssh/id_rsa.pub root@192.168.56.100:~/.ssh/id_rsa.pub

# 受控方:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

SSH 常用命令

参考:https://blog.csdn.net/smli_ng/article/details/106148729

1
2
3
4
5
6
7
8
9
10
SSH 语法: ssh root@192.168.3.163

# SSH 常用命令选项
-C 对传输数据进行压缩,减小所占的带宽
-f 后台运行程序
-p 指定目标端口
-N 不执行登录 shell
-g 复用访问时作为网关,支持多主机访问本地端口
-L 侦听本地端口
-tt 远程命令执行后即时关闭连接

在远程 SSH 命令中传递本地变量

1
2
# $BUILD_NUMBER 是客户端环境变量参数,注意是双引号,单引号则不识别变量
ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER"

远程执行命令后即时关闭连接

当远程通过 ssh 登录主机时出现 Pseudo-terminal will not be allocated because stdin is not a terminal. 错误时,字面意思是伪终端将无法分配,因为标准输入不是终端。

解决方法是增加 -tt 参数来强制伪终端分配,即使标准输入不是终端。

1
ssh -tt user1@host1 -p 9527