使用Shell脚本实现SFTP下载文件
一.生成密钥对
ssh-keygen –d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/local_user/.ssh/id_dsa): (直接按回车不要输入任何东西。注意这个路径/home/local_user/.ssh/id_dsa)
# 按回车保存为: /home/local_user/.ssh/id_dsa,即当前用户local_user的私钥
Enter passphrase (empty for no passphrase): (直接按回车不要输入任何东西)
# 按回车,表示读取密钥时不需要密钥的密码
Enter same passphrase again: (直接按回车不要输入任何东西)
# 确认密钥的密码,必须和上面的输入相同
Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私钥保存信息
Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公钥保存信息
The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密钥指纹
二.分发公钥
为了使用密钥,必须将公钥分发到欲登录的远程服务器上,这里远程服务器记为remote_hos
t,欲登录的远程用户记为remote_user
1.copy公钥到欲登录的远程服务器的远程用户的家目录下,例如:
copy id_dsa.pub到remote_host:/home/remote_user/.ssh/(注意这个路径)
若目录/home/remote_user/.ssh/不存在,请先创建之.
2.将copy来的公钥文件改名为authorized_keys
3.修改公钥文件的访问权限
chmod 644 authorized_keys
示例
date=` date +%Y-%m-%d `
##########################################
# 下载文件 #
##########################################
#sftp -oPort=ssh端口号 用户名@IP地址 << EOF
sftp -oPort=29 root@****** << EOF
#cd 服务器文件的存放路径
cd /var/MeMediaBackup/
# lcd 本地文件存放路径
lcd /backup/memediadbbackup/
#-get 服务器文件的存放路径下的文件名
-get memediadb$date.tar.gz
##########################################
# 减压并导入数据库 #
##########################################
tar -zxvf memediadb$date.tar.gz
/usr/bin/mysql -u root -pmemediahegg.0 -h ****** memediadb < /backup/memediadbbackup/memediadb$date.sql
##########################################
# 删除减压后的sql文件 #
##########################################
rm -rf memediadb$date.sql
quit
EOF
ssh-keygen –d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/local_user/.ssh/id_dsa): (直接按回车不要输入任何东西。注意这个路径/home/local_user/.ssh/id_dsa)
# 按回车保存为: /home/local_user/.ssh/id_dsa,即当前用户local_user的私钥
Enter passphrase (empty for no passphrase): (直接按回车不要输入任何东西)
# 按回车,表示读取密钥时不需要密钥的密码
Enter same passphrase again: (直接按回车不要输入任何东西)
# 确认密钥的密码,必须和上面的输入相同
Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私钥保存信息
Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公钥保存信息
The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密钥指纹
二.分发公钥
为了使用密钥,必须将公钥分发到欲登录的远程服务器上,这里远程服务器记为remote_hos
t,欲登录的远程用户记为remote_user
1.copy公钥到欲登录的远程服务器的远程用户的家目录下,例如:
copy id_dsa.pub到remote_host:/home/remote_user/.ssh/(注意这个路径)
若目录/home/remote_user/.ssh/不存在,请先创建之.
2.将copy来的公钥文件改名为authorized_keys
3.修改公钥文件的访问权限
chmod 644 authorized_keys
示例
date=` date +%Y-%m-%d `
##########################################
# 下载文件 #
##########################################
#sftp -oPort=ssh端口号 用户名@IP地址 << EOF
sftp -oPort=29 root@****** << EOF
#cd 服务器文件的存放路径
cd /var/MeMediaBackup/
# lcd 本地文件存放路径
lcd /backup/memediadbbackup/
#-get 服务器文件的存放路径下的文件名
-get memediadb$date.tar.gz
##########################################
# 减压并导入数据库 #
##########################################
tar -zxvf memediadb$date.tar.gz
/usr/bin/mysql -u root -pmemediahegg.0 -h ****** memediadb < /backup/memediadbbackup/memediadb$date.sql
##########################################
# 删除减压后的sql文件 #
##########################################
rm -rf memediadb$date.sql
quit
EOF