如何在windows通过git ssh linux
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在windows通过git ssh linux相关的知识,希望对你有一定的参考价值。
因为在使用repo git下载代码时需要使用ssh方式,目前下载代码的方式不支持密码方式,仅支持ssh-key的方式,那么需要下载代码的用户请根据以下方法在本地生成ssh-key,然后将对应的证书文件发送给版主或者管理员,当获取下载代码权限后可以直接下载; 访问权限的设定,新的git库采用证书认证的方式,请在你们的本机上执行: # ssh-keygen 根据提示输入信息后会在~/.ssh目录下生成id_rsa.pub文件和id_rsa文件。请将id_rsa.pub文件发给我(版主)。然后在使用ssh的时候使用id_rsa证书。 linux和MacOS使用ssh登录时会自动提供生成的ssh证书。windows上可以考虑使用xshell或者putty创建证书。 目前没有提供密码登录。 参考技术A 可以共用,服务器只根据客户端的信息识别用户,与用户使用的操作系统无关。同一个用户可将密钥文件拷贝到任意操作系统下的主机,而不需要重新生成密钥,更不用重新申请git账户。本回答被提问者采纳SSH如何通过公钥连接云服务器
导读 | 通常我们连接远程服务器(linux)windows下通过putty或xshell等工具远程连接。linux下可以直接通过ssh命令连接。其实这两者都是一致的,都是通过ssh协议进行传输。 |
如果我们的windows没有安装putty等工具,但是有git-bash的话也可以直接通过ssh来连接。通过以下命令:
ssh [email protected]/主机名/域名/
接下来会叫你输入密码,成功输入后即可连接成功。但是这样每一次都要输入面码,我们可以编写一个shell脚本,类似于:conn_vps.sh这样的文件
首先,打开git-bash(桌面上右击,选择Git Bash Here。) $ 为gitbash的命令提示符, # 为注释,非命令不必输入。下同
$ cd ~ # 进入到用户家目录 $ mkdir sh # 新建一个sh目录,用于存放shell脚本。 $ cd sh # 以上都是我的个人习惯。不必和我一样
然后新建该文件
$ vim conn_vps.sh
进入vim模式,按i键即可编辑,输入以下内容:
#!/bin/bash # 这一行必须要写,非注释 ssh [email protected]/主机名/域名 # 输入你自己的远程主机ip等
此时按,ESC键,再按:wq保存退出。
现在即可运行该脚本:
$ ./conn_vps.sh $ sh conn_vps.sh # 这两条命令,任意一条都可以运行
当然如果你在本身就在linux环境下,需要赋予执行权限,像下面这样。和我一样在git-bash中创建的,不需要这一步,本身就有执行权限。
$ chmod 755 conn_vps.sh
然后再执行,然后你会发现依然会输入密码,这是当然的,我们刚才只不过是把刚才的命令简单的脚本了一下。
接下来SSH的密钥分发。
查看是否有密钥
$ ll ~/.shh/ # 查看是否有id.rsa,和id.rsa.pub两个文件。
如果没有的话,可以生成一个。有的话跳过这一步
$ ssh-keygen -t rsa -C "[email protected]" #这部其实可以不加邮箱参数,但是git配置github连接需要。
#所以最好一次性做了,用一样的密钥。邮箱换成你自己的邮箱。
连续三次回车,如果不设置密码的话。
接下来,上传公钥到远程服务器
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]远程服务器的ip/主机名/域名
然后运行conn_vps.sh。第一次还是需要输入一遍密码,如果出现以下提示符即算成功。
Now try logging into the machine, with: "ssh ‘[email protected]你的ip‘" and check to make sure that only the key(s) you wanted were added.
这样就算成功了,在运行conn_vps.sh,即可连接上你的服务器。
如何你要多个云服务器。root密码可以弄得复杂些,然后通过这样的方式连接云服务器。yeah!大功告成!嗯,既然我们可以登录上去了,那我们去看看远程机器上(linux)的情况。
输入ll .ssh/
[[email protected] ~]# ll .ssh/ total 4 -rw------- 1 root root 401 Sep 10 20:47 authorized_keys
如果你的远程机器上没有生成ssh-keygen,就会只有一个文件,authorized_keys翻译过来就是认证的密钥。而这个认证的密钥就是前面那条命令的的 ~/.ssh/id_rsa.pub 的内容。
所以这条命令 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]远程服务器的ip/主机名/域名就是把id_rsa.pub的内容粘贴到authorized_keys中。如果另一台客户端也想连接到这台远程服务器。可以用同样的命令来一遍,也可以直接用cat查看id_rsa.pub,再在服务端用vim打开authorized_keys文件。粘贴进去,之前的不要删除,换一行即可。
当然如果你不想用ssh-copy-id -i命令,那你就得记住authorized_keys这个单词~
以上是关于如何在windows通过git ssh linux的主要内容,如果未能解决你的问题,请参考以下文章
windows下通过代理强制sourcetree git ssh
带有 ssh 的 Git 克隆适用于 Linux,但不适用于 Windows PowerShell