[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f7jP-iC3onKKTow-VsPQ7AY6EGDkuGdyU2Zl0S0C93IQ":3},{"code":4,"message":5,"data":6},200,"成功",{"id":7,"createdAt":8,"title":9,"content":10,"summary":11,"image":12,"uid":13,"user":14,"categoryId":21,"category":22,"subCategoryId":24,"subCategory":25,"comments":27,"status":17,"reason":28,"notice":28,"visitCount":29,"commentCount":30,"keywords":31},93,"2024-03-05T17:26:55.36Z","远程ssh到服务器，以及本地电脑和服务端之间的文件传输scp相关操作","**前言**\n这篇文章介绍一下如何在本地电脑上ssh登录到远程服务器，并且实现本地和远程服务器之间的scp文件传输。写一个shell脚本文件，如何处理本地代码产物和远程服务器上的部署。\n\n**准备工作**\n1. 一台云服务器，使用阿里云或者腾讯云等其他公司的云服务器，云服务器我使用的是centos7系列的。\n2. 本地一台Mac电脑，我是使用的Mac电脑，所以和windows电脑上操作可能不太一样，但是如果都在本地安装了ssh和scp环境，那就没啥事。\n3. 云服务器上使用密钥，一般云服务器都可以在服务器的管理台模块找到密钥配置部分。需要生成密钥对，并且绑定到云主机。如下图\n![云服务器密钥](https://image.xinwei.ltd/61709658040939.png)\n4. 生成的私钥会下载到我们的电脑中，需要妥善保管，放在某一个文件夹下面，后面会用到这个私钥文件。\n5. 需要云服务器的ip地址，后面流程会用到。\n6. 有的云服务器在绑定密钥后，会自动屏蔽掉密码登录。如果你需要保留密码登录，那么需要额外设置，下面是流程：\n- 通过ssh方式使用密钥文件登录主机（下面的ssh登录流程有），就可以在终端进入服务器的目录进行操作；\n- 在终端编辑sshd_config文件\n```\nvi /etc/ssh/sshd_config \n```\n![](https://image.xinwei.ltd/11709658750408.png)\n将`PasswordAuthentication`设置为yes（仅仅需要将这个配置项前的#号去掉）\n- 重启主机的ssh服务\n```\nsystemctl restart sshd\n```\n![](https://image.xinwei.ltd/21709658841094.png)\n\n\n## 使用SSH登录远程主机\n打开终端，在终端窗口中输入以下命令:\n1. 方式一：会提示需要密码输入，需要手动输入密码\n// root是主机登录的username，124.xxx.xxx.xxx需要填写你自己的主机ip地址\n```terminal\nssh root@124.xxx.xxx.xxx\n```\n如截图\n![](https://image.xinwei.ltd/51709658391238.png)\n需要手动输入密码\n![](https://image.xinwei.ltd/41709658436271.png)\n\n2. 方式二：使用私钥配合ssh进行免密码登录云主机\n```\nssh -i /Users/hanweixing/xxx.pem root@124.xxx.xxx.xxx\n```\n其中的\"/Users/hanweixing/xxx.pem\"是你在云服务器生成的密钥对私钥文件所在的路径，root是主机登录名，124.xxx.xxx.xxx是主机的ip地址\n\n## 使用scp免输密码的方式将本地文件或文件夹上传到云服务器\n使用scp可以将本地文件/文件夹上传到云服务器，或者从下载云服务器上的文件或者文件夹到本地的某个路径下。\n```\nscp -i /Users/hanweixing/xxx.pem -r output root@124.xxx.xxx.xxx:/root/xxx/output\n```\n- -i 指定私钥文件\n- /Users/hanweixing/xxx.pem 私钥文件路径\n- -r 递归上传指定文件夹下的所有内容\n- output 将要上传到服务器的文件夹\n- :/root/xxx/output 云主机上的某一个路径\n\n## 本地电脑上写一个脚本，上传文件到云服务器主机后，继续让剩余脚本在云主机上执行\n1. 方式一：使用EOF的方式\n```\nssh -i /Users/hanweixing/xxx.pem root@124.xxx.xxx.xxx \u003C\u003C EOF\necho \"当前目录：\"\npwd\necho \"列出所有docker容器：\"\ndocker ps -a\nEOF\n```\n这种方式会在登录主机后，会继续在主机环境下执行EOF包裹的脚本。\n\n2. 方式二：使用单引号括住要继续执行的脚本\n```\nssh -i /Users/hanweixing/xxx.pem root@124.xxx.xxx.xxx 'echo \"当前目录：\"; pwd; docker ps -a'\n```\n这种方式同样也会在登录云主机后，继续执行单引号内部包裹的脚本。\n\n3. 方式三：当然是在云服务器上创建一个bash脚本，然后通过ssh登录主机去执行这个脚本。\n\nssh登录云服务器和scp操作本地和云服务器之间的文件传输就介绍这么多，希望对大家有所帮助。\n\n\n","这篇文章介绍一下如何在本地电脑上ssh登录到远程服务器，并且实现本地和远程服务器之间的scp文件传输。写一个shell脚本文件，如何处理本地代码产物和远程服务器上的部署。","https://image.xinwei.ltd/61709658040939.png",499668042977349,{"phone":15,"userId":13,"nickName":16,"vipType":17,"avatar":18,"sign":19,"createdAt":20},"13121171998","全栈老韩",1,"https://image.xinwei.ltd/images/IMG_5430.JPG","全栈工程师，擅长iOS App开发、前端（vue、react、nuxt、小程序&Taro）开发、Flutter、React Native、后端（midwayjs、golang、express、koa）开发、docker容器、seo优化等。","2024-01-01T16:14:30.305Z",2,{"id":21,"name":23},"IT技术",18,{"id":24,"name":26,"parentId":21},"Linux",[],"",761,0,"mac ssh,ssh terminal,ssh command,ssh login,ssh命令,ssh指令"]