使用scp免密远程复制(传出或拉取)文件

11月 18, 2023 by · Leave a Comment 

默认情况下使用scp传输文件需要输入ssh密码,这不便于在crontab中使用。我们可以在主机上生成密钥,复制到远程服务器建立信任,这样scp就可以实现免密复制文件了。

下面以两台服务器复制(包括传出和拉取)文件为例,详细说一下过程。假定我们要把服务器1.1.1.1上的/root/a.tar.gz传出到服务器2.2.2.2上,二者的ssh端口都是222。

第一步

在1.1.1.1上运行:
ssh-keygen -t rsa

一路回车(好像是3次),结束后会在/root/.ssh目录下出现两个文件:

id_rsa
id_rsa.pub

第二步

把id_rsa.pub文件复制到2.2.2.2的/root/.ssh目录下,然后改名为authorized_keys。如果该文件已经存在,可以用这个命令把文件追加进去:

cat id_rsa.pub >> authorized_keys

第三步

开始第一次免密复制文件,从1.1.1.1上将文件传出到2.2.2.2。
在1.1.1.1上运行
scp -P 222 /root/a.tar.gz root@2.2.2.2:/root
如果你的ssh端口是默认的22,那么-P 222可以不要。
这一次要输入yes才会开始,之后就不用了。

如果你想在2.2.2.2上从1.1.1.1拉取文件过来,那么你就要在2.2.2.2上做一次ssh-keygen,然后把authorized_keys文件复制到1.1.1.1上去。拉取文件执行的命令是:
scp -P 222 root@1.1.1.1:/root/a.tar.gz /root

——本文最后由傅老师于2023-11-18编辑过

linux下批量修改文件权限(chmod 777 *)出错:Argument list too long

12月 13, 2021 by · Leave a Comment 

某目录下有数万个文本文件,为了方便读写,批量设置权限777。进入目录后,
chmod 777 *

出错:

-bash: /usr/bin/chmod: Argument list too long

一个办法是对目录作递归设置。另一个方法可以在当前目录下使用:

echo * | xargs chmod 777

类似地,批量删除文件和目录:

echo * | xargs rm -rf

——本文最后由傅老师于2021-12-15编辑过