维基百科上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 [email protected]
但是如果想支持多个用户,则需要添加其它用户
添加用户
具体可参考添加用户
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)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;反之亦然。因为加密和机密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法
非对称加密算法实现机密信息交换的基本过程为:
- 甲方生成一对密钥并将其中的一把作为共用密钥向其他方公开
- 得到该共用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方
- 甲方再用自己保存的另一把专用密钥对加密后的信息进行解密
甲方只能用其专用密钥解密由其共用密钥加密后的信息
使用ssh-keygen生成密钥
使用DSA生成密钥
生成的密钥默认会存放在~/.ssh/
目录下
其中public key是~/.ssh/id_dsa.pub
,private key是~/.ssh/id_dsa
向乙方发送公共密钥
$ssh-copy-id [email protected]
发送到乙方的公钥会存放在乙方的.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 [email protected]:~/Public/lyndonrepo.git myrepo
ubuntu上开启ssh服务,并搭建基于ssh的git服务器