前言
这篇文章介绍一下如何在本地电脑上ssh登录到远程服务器,并且实现本地和远程服务器之间的scp文件传输。写一个shell脚本文件,如何处理本地代码产物和远程服务器上的部署。
准备工作
- 一台云服务器,使用阿里云或者腾讯云等其他公司的云服务器,云服务器我使用的是centos7系列的。
- 本地一台Mac电脑,我是使用的Mac电脑,所以和windows电脑上操作可能不太一样,但是如果都在本地安装了ssh和scp环境,那就没啥事。
- 云服务器上使用密钥,一般云服务器都可以在服务器的管理台模块找到密钥配置部分。需要生成密钥对,并且绑定到云主机。如下图
- 生成的私钥会下载到我们的电脑中,需要妥善保管,放在某一个文件夹下面,后面会用到这个私钥文件。
- 需要云服务器的ip地址,后面流程会用到。
- 有的云服务器在绑定密钥后,会自动屏蔽掉密码登录。如果你需要保留密码登录,那么需要额外设置,下面是流程:
- 通过ssh方式使用密钥文件登录主机(下面的ssh登录流程有),就可以在终端进入服务器的目录进行操作;
- 在终端编辑sshd_config文件
vi /etc/ssh/sshd_config
将PasswordAuthentication
设置为yes(仅仅需要将这个配置项前的#号去掉)
- 重启主机的ssh服务
systemctl restart sshd

使用SSH登录远程主机
打开终端,在终端窗口中输入以下命令:
- 方式一:会提示需要密码输入,需要手动输入密码
// root是主机登录的username,124.xxx.xxx.xxx需要填写你自己的主机ip地址
ssh root@124.xxx.xxx.xxx
如截图
需要手动输入密码
- 方式二:使用私钥配合ssh进行免密码登录云主机
ssh -i /Users/hanweixing/xxx.pem root@124.xxx.xxx.xxx
其中的"/Users/hanweixing/xxx.pem"是你在云服务器生成的密钥对私钥文件所在的路径,root是主机登录名,124.xxx.xxx.xxx是主机的ip地址
使用scp免输密码的方式将本地文件或文件夹上传到云服务器
使用scp可以将本地文件/文件夹上传到云服务器,或者从下载云服务器上的文件或者文件夹到本地的某个路径下。
scp -i /Users/hanweixing/xxx.pem -r output root@124.xxx.xxx.xxx:/root/xxx/output
- -i 指定私钥文件
- /Users/hanweixing/xxx.pem 私钥文件路径
- -r 递归上传指定文件夹下的所有内容
- output 将要上传到服务器的文件夹
- :/root/xxx/output 云主机上的某一个路径
本地电脑上写一个脚本,上传文件到云服务器主机后,继续让剩余脚本在云主机上执行
- 方式一:使用EOF的方式
ssh -i /Users/hanweixing/xxx.pem root@124.xxx.xxx.xxx << EOF
echo "当前目录:"
pwd
echo "列出所有docker容器:"
docker ps -a
EOF
这种方式会在登录主机后,会继续在主机环境下执行EOF包裹的脚本。
- 方式二:使用单引号括住要继续执行的脚本
ssh -i /Users/hanweixing/xxx.pem root@124.xxx.xxx.xxx 'echo "当前目录:"; pwd; docker ps -a'
这种方式同样也会在登录云主机后,继续执行单引号内部包裹的脚本。
- 方式三:当然是在云服务器上创建一个bash脚本,然后通过ssh登录主机去执行这个脚本。
ssh登录云服务器和scp操作本地和云服务器之间的文件传输就介绍这么多,希望对大家有所帮助。