cloud9_note

cloud9に限らないメモ

View on GitHub

FTP

Client

接続

# 下記のどちらか
# 1.
ftp ${接続先ホスト} ${接続先ポート}

# 2.
ftp
ftp> open ${接続先ホスト} ${接続先ポート}

Server

vsftpd

sudo apt update && sudo apt -y upgrade && sudo apt -y install vsftpd
sudo systemctl enable vsftpd
sudo systemctl restart vsftpd

停止

sudo systemctl disable vsftpd

atmoz/sftp(1)

version: '3'

services:
  sftp:
    image: atmoz/sftp
    container_name: sftp-test
    # docker-compose.ymlがあるディレクトリに、コンテナとの共有ディレクトリを作る
    volumes:
        - ./data:/home/testuser/data
    ports:
        - "2222:22"
    command: testuser:test123:::data

参考

atmoz/sftp

鍵を使って接続する。

  1. 鍵作成する。
  2. 下記コマンドで起動。
    docker run \
     -v <host-dir>/id_rsa.pub:/home/foo/.ssh/keys/id_rsa.pub:ro \
     -v <host-dir>/id_other.pub:/home/foo/.ssh/keys/id_other.pub:ro \
     -v <host-dir>/share:/home/foo/share \
     -p 2222:22 -d atmoz/sftp \
     foo::1001
    

コンテナ側の${HOME}/.ssh/keys 配下に公開鍵を配置すると、authorized_keysに追記してくれる。
dokcer-composeだとうまく行かない?

Dockerホストから接続

sftp -i <host-dir>/id_rsa -P2222 foo@localhost

クライアントDockerコンテナを作る

FROM ubuntu:latest

RUN apt update && apt upgrade -y && apt install -y less nano openssh-client sudo

ARG USERNAME=user
ARG GROUPNAME=user
ARG UID=1000
ARG GID=1000
ARG PASSWORD=user
RUN groupadd -g $GID $GROUPNAME && \
    useradd -m -s /bin/bash -u $UID -g $GID -G sudo $USERNAME && \
    echo $USERNAME:$PASSWORD | chpasswd && \
    echo "$USERNAME   ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER $USERNAME
WORKDIR /home/$USERNAME/

COPY .ssh/ /home/$USERNAME/.ssh/

RUN sudo chown -R $USERNAME:$GROUPNAME /home/$USERNAME

.ssh配下に鍵ファイルがある想定。

version: '3'

services:
  sftp_client:
    build: ./docker/client
    container_name: sftp_client
    tty: true

鍵ファイルはvolumeで渡しても良さそうな気がするが、未確認。

docker exec -it sftp_client /bin/bash
sftp -i ./.ssh/id_rsa -P2222 foo@${ホストローカルIP}
WSL2のIPアドレスの取得方法

WSL2でコンテナ起動した場合に参照するIPは下記で取得する。

ip a show dev eth0

参考

パスワードを保存する