SSH 三步解决免密登录

1.客户端生成公私钥

2.上传公钥到服务器

3.测试免密登录

1.客户端生成公私钥

本地客户端生成公私钥:(一路回车默认即可)

ssh-keygen

上面这个命令会在用户目录.ssh文件夹下创建公私钥

cd ~/.ssh
ls

下创建两个密钥:

id_rsa (私钥)
id_rsa.pub (公钥)

2.上传公钥到服务器

这里测试用的服务器地址为:1.1.1.1
用户为:root

ssh-copy-id -i ~/.ssh/id_rsa.pub root@1.1.1.1

上面这条命令是写到服务器上的ssh目录下去了

cd ~/.ssh
vim authorized_keys

可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容。

3.测试免密登录

客户端通过ssh连接远程服务器,就可以免密登录了。

ssh root@1.1.1.1

应用

将开发数据库goc,fids加载到本地

流程
1.配置免密登录

2.远程docker 容器 mysql 用mysqldump 导出数据库 goc,fids为sql文件

3.压缩文件(公司网络带宽很低,200k)

4.下载压缩文件

5.解压

6.用mysql命令加载到本地docker容器

最终脚本

#!/bin/bash
export SQL_FILE_NAME=`date +'%Y%m%d%H%M%S'`.sql
export SQL_FILE_DOCKER=/var/lib/mysql/$SQL_FILE_NAME
export SQL_FILE_LOCAL=/root/mysql/data/$SQL_FILE_NAME
echo "export sql"
ssh  root@1.1.1.1 >/dev/null 2>&1 << eeooff
docker exec -i mysql bash -c "mysqldump -uroot -ppassword --databases goc fids > $SQL_FILE_DOCKER"  
exit
eeooff
echo "package file"
ssh root@1.1.1.1 >/dev/null 2>&1 << eeooff
xz -zq $SQL_FILE_LOCAL
mv $SQL_FILE_LOCAL.xz /root
exit
eeooff

echo "download sql"
sftp root@1.1.1.1 << eeooff
get $SQL_FILE_NAME.xz
quit
eeooff

echo "delete remote file"
ssh root@172.21.126.135 >/dev/null 2>&1   << eeooff
rm -rf $SQL_FILE_NAME.xz
exit
eeooff
echo "unpackage sql"
xz -dvv $SQL_FILE_NAME.xz

echo "load sql into db"
echo "111111"|sudo mv $SQL_FILE_NAME mysql/data 
docker exec -it acdm-mysql bash -c "mysql -uroot -ppassword < $SQL_FILE_DOCKER" > /dev/null 2>&1
docker exec -it acdm-mysql bash -c "rm -rf $SQL_FILE_DOCKER"


LINUX      远程脚本执行

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!