SSH全称Secure Shell,是应用层上的一种安全协议,专为远程登录和其他网络服务提供安全性的一种协议.
利用SSH协议可以有效防止远程管理过程中的信息泄露问题.SSH会把所有传输内容加密,防止“中间人”攻击.也能防止DNS欺骗和IP欺骗.另外SSH会压缩传输数据,实现更快的传输速度.
使用SSH主要就是通过两个ssh key文件:id_ras_xx(私钥)和id_ras_xx.pub(公钥)实现的
ssh-keygen -t rsa -C "xxx@gmail.com" #添加ssh key
Enter之后会出现以下界面,让你输入文件要保存的路径和名字,直接Enter的话会默认生成id_rsa.pub,因为接下来我们要设置多个平台账号的ssh,所以这里给他重新命一个新的名字,比如 id_rsa_公司名_平台名 (id_rsa_alibaba_gitlab)
完成之后会让你输入密码,可以设置为空,直接 Enter 即可.看到下图内容出现就表示ssh key已经生成. ~/.ssh 目录就会新增两个 id_rsa_xxx 和 id_rsa_xxx.pub 的文件.
默认的话是会自动加入ssh agent中的,但是我们重命名了,需要手动加一下
ssh-add ~/.ssh/id_ras_xx_xx
把id_rsa_xx.pub里的内容复制拷贝到git服务器相应的位置即可.
至此,如果是采用默认命名的话SSH就已经可用了.但由于我们重命名了,还需要配置一下 config 才行.在 ~/.ssh 目录下新建 config 文件,配置一下内容即可
ps: HOST 和 User 中的数据取自项目地址中的 git clone git@github.com:socketio/socket.io-client-swift.git中的git@github.com
我们一般都会有很多不同的git账号,比如GitHub,Gitlab还有国内的gitee,大多数公司也还会使用自己内部的git服务器,那就会有多个账号,这种情况就需要我们在电脑上配置多个账号了.也不复杂,只需重复上述的步骤,然后配置下config即可.
config参考如下:
至此大功告成
首先修改sshd的配置文件:$ sudo nano /etc/ssh/sshd_config
将该文件的末尾修改如下:
#Subsystem sftp /usr/lib/openssh/sftp-server
#该行(上面这行)注释掉
Subsystem sftp internal-sftp
Match group sftp
#匹配sftp组,如为单个用户可用:Match user 用户名
ChrootDirectory /sftphome/
#指定用户被锁定到的那个目录,为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
#UsePAM yes
#该行(上面这行)同样注释掉,或者移到Subsystem sftp internal-sftp的上面
下面建立sftp组和一个测试用户testuser,该用户属于sftp组:
$ sudo groupadd sftp
$ sudo useradd -d /testuser -s /bin/false -g sftp testuser
$ sudo passwd testuser
创建Ftp目录:
$ sudo mkdir -p /sftphome/testuser
重启SSH服务 sshd:
$ sudo /etc/init.d/ssh reload
此时,使用带有sftp功能的客户端软件,比如filezilla、flashfxp就可以用testuser使用sftp方式登录服务器了;
但是,此时无法在 /sftphome/testuser 目录下建立、修改文件,所以还要修改目录权限,把testuser目录属主给予用户testuser:
$ sudo chown testuser:sftp /sftphome/testuser
这样,testuser用户便可以自由 *** 作此目录了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)