SSH#
Lagoonでは、SSHを通じて実行中のコンテナに接続することができます。コンテナ自体にはSSHサーバーはインストールされていませんが、代わりにSSHを使ってLagoonに接続し、そこからKubernetes APIを通じてリモートシェル接続を作成します。
SSHアクセスの設定を確認する#
SSHキーの生成#
同じキーを複数のコンピューター間で共有するのではなく、各デバイスごとに別々のSSHキーを生成することをお勧めします。各システムでのSSHキーの生成方法については以下を参照してください。
OSX(Mac)#
Linux(Ubuntu)#
Windows#
SSHエージェント#
OSX(Mac)#
OSXは、起動時に設定されたSSHキーをロードするようにSSHエージェントが設定されていません。これにより問題が発生することがあります。この機能の設定方法については、こちらのガイドを参照してください:https://www.backarapper.com/add-ssh-keys-to-ssh-agent-on-startup-in-macos/
Linux#
Linuxディストリビューションは、ssh-agent
の使用方法によります。一般的なガイドはここにあります:https://www.ssh.com/academy/ssh/agent
Windows#
最近ではWindowsでのSSHキーのサポートが大幅に向上し、現在ではネイティブにサポートされています。Windows 10のSSHエージェントの設定についての便利なガイドはここにあります:https://richardballard.co.uk/ssh-keys-on-windows-10/
SSHキーのアップロード#
UIを通じて#
SSHキーをUIを通じてアップロードできます。通常通りにログインしてください。
右上の角にある設定をクリックします:
次に、SSHキーをアップロードできるページが表示され、アップロードされたキーが表示されます。キーをテキストボックスに貼り付け、名前を付けて「追加」をクリックします。それだけです!必要に応じて追加のキーを追加します。
コマンドライン経由#
Lagoon APIをGraphQL経由で使用してユーザーにSSHキーを追加する一般的な例はここにあります。 -プロジェクト)
ポッドへのSSH接続#
接続#
接続は直接的で、次のパターンに従います:
PORT
- リモートシェルのSSHエンドポイントポート(amazee.ioの場合:32222
)。HOST
- リモートシェルのSSHエンドポイントホスト(amazee.ioの場合ssh.lagoon.amazeeio.cloud
)。PROJECT-ENVIRONMENT-NAME
- 接続したい環境。これは通常PROJECTNAME-ENVIRONMENT
のパターンで使用されます。
例えば:
これにより、main
環境のプロジェクトdrupal-example
に接続します。
ポッド/サービス、コンテナ定義#
デフォルトでは、リモートシェルはタイプcli
で定義されたコンテナに接続しようとします。他のポッド/サービスに接続したい場合は、以下のように定義できます:
あなたのポッド/サービスに複数のコンテナが含まれている場合、Lagoonはあなたを最初に定義されたコンテナに接続します。また、接続したい特定のコンテナを定義することもできます:
```bash title=" "コンテナ"を定義します。 ssh -p [ポート] -t [プロジェクト-環境名]@[ホスト] service=[サービス名] container=[コンテナ名]
例えば、nginx
ポッド内のphp
コンテナに接続するには:
ssh -p 32222 -t drupal-example-main@ssh.lagoon.amazeeio.cloud service=nginx container=php
ファイルのコピー#
一般的なケースで、ファイルをcli
ポッドにコピーすることは、通常のSSH互換ツールを使って達成できます。
scp#
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [ローカルパス] [プロジェクト名]-[環境名]@ssh.lagoon.amazeeio.cloud:[リモートパス]
rsync#
rsync --rsh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 32222' [ローカルパス] [プロジェクト名]-[環境名]@ssh.lagoon.amazeeio.cloud:[リモートパス]
tar#
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [プロジェクト名]-[環境名]@ssh.lagoon.amazee.io tar -zcf - [リモートパス] | tar -zxf - -C /tmp/
非CLIポッド/サービスの指定#
まれなケースで、非CLIサービスを指定する必要がある場合は、指定することができます。 service=...
および/またはcontainer=...
引数はコピーコマンドにあります。
tar
をssh
接続を通してパイプすることは最も単純な方法で、通常のtar
フラグを用いてファイルやディレクトリーをコピーするために使用できます:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [project_name]-[environment_name]@ssh.lagoon.amazee.io service=solr tar -zcf - [remote_path] | tar -zxf - -C /tmp/
また、LagoonのSSHサービスに必要な形でssh
の引数を並べ替えるラッパースクリプトを用いてrsync
を使用することもできます:
#!/usr/bin/env sh
svc=$1 user=$3 host=$4
shift 4
exec ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 32222 -l "$user" "$host" "$svc" "$@"
それを実行可能なシェルスクリプトrsh.sh
に入れて、rsync
コマンドでservice=...
を指定します:
rsync --rsh="/path/to/rsh.sh service=cli" /tmp/foo [project_name]-[environment_name]@ssh.lagoon.amazeeio.cloud:/tmp/foo
このスクリプトは、container=...
引数も処理するように調整することもできます。