首页 > 代码库 > ubuntu上开启ssh服务,并搭建基于ssh的git服务器

ubuntu上开启ssh服务,并搭建基于ssh的git服务器

维基百科上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 myuserWithout a home directory
sudo useradd -m myuserWith home directory
sudo passwd myuserThen set the password
sudo usermod -s /bin/bash myuserThen 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生成密钥


使用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

安装git


$sudo apt-get install git

初始化仓库


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

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


克隆仓库


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

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