以下紀錄如何產生一個基本的 docker image,安裝了 openssh-server 可以用 ssh 遠端登入。
設定 docker image 以及 openssh-server
docker run -it --name c1 centos:latest /bin/bash
安裝一些基本工具,以及 openssh-server
#yum provides ifconfig
yum install -y net-tools telnet iptables sudo initscripts
yum install -y passwd openssl openssh-server
測試 sshd
/usr/sbin/sshd -D
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
缺少了一些 key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#直接 enter 即可
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
#直接 enter 即可
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
修改 UsePAM 設定
vi /etc/ssh/sshd_config
# UsePAM yes 改成 UsePAM no
UsePAM no
再測試看看 sshd
/usr/sbin/sshd -D
修改 root 密碼
passwd root
離開 docker
exit
以 docker ps -l 找到剛剛那個 container 的 id
$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
107fb9c3fc0d centos:latest "/bin/bash" 7 minutes ago Exited (0) 2 seconds ago c1
將 container 存成另一個新的 image
docker commit 107fb9c3fc0d centosssh
以新的 image 啟動另一個 docker instance
docker run -d -p 10022:22 centosssh /usr/sbin/sshd -D
現在可以直接 ssh 登入新的 docker machine
ssh root@localhost -p 10022
如果遇到 Failed to get D-Bus connection: Operation not permitted 的問題:ref [原创] 解决 CentOS7 容器 Failed to get D-Bus connection: Operation not permitted
docker run -d -p 10022:22 -e "container=docker" --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup --name centos7test centosssh /usr/sbin/init
docker exec -it centos7test /bin/bash
gitolite 測試
在新的 docker 機器上安裝 gitolite 測試
yum install -y autoconf git
useradd git
passwd git
產生管理員的 key
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
01:93:46:03:17:6e:e2:06:ec:d6:07:db:2e:13:a3:92 root@1f01b0c5ad69
The key's randomart image is:
+--[ RSA 2048]----+
| .oBo |
| . oo+ |
| o o.o . |
| . + * . |
| o B o S |
| o o = |
|E . o . |
| . o |
| |
+-----------------+
cp /root/.ssh/id_rsa.pub /home/git/admin.pub
以 scp 遠端測試 key
sshpass -p "password" scp -p -P 10022 git@localhost:/home/git/admin.pub .
在本機上安裝 gitolite
su - git
mkdir ~/bin
git clone git://github.com/sitaramc/gitolite
gitolite/install -ln ~/bin
把 admin.pub 放入 gitolite
gitolite setup -pk admin.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh missing; creating a new one
(this is normal on a brand new install)
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
(this is normal on a brand new install)
回到 root 身份
exit
以 git clone gitolite-admin 進行 local git 測試
mkdir test
cd test
git config --global user.email "charley@maxkit.com.tw"
git config --global user.name "charley"
git clone ssh://git@localhost/gitolite-admin
現在就可以利用 gitolite-admin 進行 git 帳號及 repo 維護
放入新的 user key: test.pub 放到 keydir 目錄中
git add keydir/test.pub
修改 conf/gitolite.conf
repo gitolite-admin
RW+ = admin
RW+ = test
repo testing
RW+ = admin
RW+ = test
將新的 test 增加到 gitolite-admin 裡面
git add keydir/test.pub
git add conf/gitolite.conf
git commit -m 'add test key'
git push origin master
也可以用遠端的方式存取 git
git clone ssh://git@localhost:10022/gitolite-admin
How to install Gitolite in CentOS 7
Linux 使用 Gitolite 架設 Git Server
沒有留言:
張貼留言