前言SecureShell(SecureShellProtocol,简称SSH)是一种加密的网络传输协议,可以在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道实现SSH客户端与服务器的连接。虽然任何网络服务都可以通过SSH安全传输,但是SSH最常见的用途是远程登录系统。人们通常使用SSH传输命令行界面并远程执行命令。---Wiki百科公钥私钥对使用ssh-keygen创建id_rsa和id_rsa.pubssh-keygen-trsa-C"your_email@example.com"[hostname~]$ssh-keygen生成公钥/私钥rsa密钥对.输入保存密钥的文件(/home/admin/.ssh/id_rsa):输入密码(没有密码为空):再次输入相同的密码:您的身份已保存在/home/admin/.ssh/id_rsa中。您的公钥已保存在/home/admin/.ssh/id_rsa.pub中。密钥指纹为:步骤说明输入步骤1:输入保存密钥的文件(/home/admin/.ssh/id_rsa)设置保存公钥的地址InputStep2:Enterpassphrase(emptyfornopassphrase):设置公钥密码,默认为空,如果设置,需要修改连接方式ssh-KxxxInputStep3:Entersamepassphraseagain:Repeatthesetting公钥密码完成后,会生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。场景-远程服务器1连接远程服务器2-本地拉取远程GIT代码-脚本部署代码远程服务器连接假设我现在有两台服务器ServerA10.0.0.1ServerB10.0.0.2如果想让ServerA登录ServerB没有密码,需要将A服务器的id_rsa.pub添加到B服务器上a用户的authorized_keys中,然后执行sshb@10.0.0.2第一次使用a服务器连接b服务器时,有将手指验证主机'10.0.0.2(10.0.0.2)'的真实性不能是tablished.RSA密钥指纹是70:e5:23:cf:dc:03:2d:09:40:4a:2a:c6:c5:17:e2:32.Areyousureyouwanttocontinueconnecting(yes/no)?意图是将服务器b的公钥存储在服务器a的~/.ssh/know_hosts文件中#忽略输入yes/nossh-oStrictHostKeyChecking=nob@10.0.0.2本地拉取远程GIT代码假设如下本机本地远程机器git以github为例,我们将本地及其地址设置为:https://github.com/settings/s...图片如下:填写我们生成的id_rsa.pubclientmachine到这个形式,这意味着github仓库允许我们用户拉取代码脚本来部署代码假设我们使用ssh-keygen生成一组deploy(deploy_id_rsa.pub)公钥和(deploy_id_rsa)私钥。具体执行方法#deploy.sh#手动开启ssheval$(ssh-agent-s)#添加deploy私钥ssh-add./deploy_id_rsa#查看ssh-agent中的keyssh-add-l#从ssh-agent中删除deploykey需要依赖deploypublickeyssh-add-d./deploy_id_rsa.pubexportdeploy_server=b@10.0.0.2exportdeploy_path=/home/www/webrootssh-oStrictHostKeyChecking=no-P22${deploy_server}"mkdir-p${deploy_path}/public"ssh-oStrictHostKeyChecking=no-P22${deploy_server}"mkdir-p${deploy_path}/_tmp"scp-P22-rbuild/*${deploy_server}:${deploy_path}/_tmpssh-p22${deploy_server}"mv${deploy_path}/public${deploy_path}/_old&&${deploy_path}/_tmp${deploy_path}/public"ssh-p22server_user@server_host"rm-rf${deploy_path}/_old"上述脚本的作用是将构建的所有内容转移到服务器b的/home/www/webrrot/public。总结笔者目前使用的道德ssh与上述情况有关,但ssh的作用远不止以上列举的几项。等我进阶理解了再补上这篇文章。欢迎大家留言提问,点赞收藏!!
