维基百科上SSH的定义如下


Secure Shell(縮寫为SSH),由IETF的網路工作小組(Network Working Group)所制定;SSH為一项建立在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。



安装ssh服务器



安装openssh-server



$sudo apt-get install openssh-server


安装成功之后,通过以下命令来确保server已经启动


$sudo start ssh


如果出现以下结果,则说明已经开始运行


start: Job is already running: ssh


安装好openssh-server之后,使用server上已有的用户名和密码就可以用ssh登录到server

例如,如果server有叫lyndon的用户,则用下面的命令就可以实现登录


$ssh lyndon@192.168.111.111



但是如果想支持多个用户,则需要添加其它用户



添加用户



具体可参考​​添加用户​

sudo useradd myuser

Without a home directory

sudo useradd -m myuser

With home directory

sudo passwd myuser

Then set the password

sudo usermod -s /bin/bash myuser

Then set the shell



SSH keys认证登录



SSH keys allow authentication between two hosts without the need of a password. SSH key authentication uses two keys a private key and a public key.

通过定义可以看出SSH kyes认证用的是非对称加密技术


与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;反之亦然。因为加密和机密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法

非对称加密算法实现机密信息交换的基本过程为:

  1. 甲方生成一对密钥并将其中的一把作为共用密钥向其他方公开
  2. 得到该共用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方
  3. 甲方再用自己保存的另一把专用密钥对加密后的信息进行解密

甲方只能用其专用密钥解密由其共用密钥加密后的信息

使用ssh-keygen生成密钥



$ssh-keygen -t rsa


使用​​DSA​​生成密钥

生成的密钥默认会存放在​​~/.ssh/​​目录下

其中public key是​​~/.ssh/id_dsa.pub​​​,private key是​​~/.ssh/id_dsa​



向乙方发送公共密钥



$ssh-copy-id username@remotehost


发送到乙方的公钥会存放在乙方的​​.ssh/authorized_keys​​这个文件中

所以为了安全,我们需要修改权限


$sudo chmod 600 .ssh/authorized_keys



如果出现了如下错误


Agent admitted failure to sign using the key.


可以在home目录下


$ssh-add


安装git



$sudo apt-get install git



初始化仓库



$git init --bare ~/Public/lyndonrepo.git


git的remote仓库已经在服务器创建完成。



克隆仓库



回到客户端,通过以下命令就可以clone仓库了


$git clone username@remotehost:~/Public/lyndonrepo.git myrepo