コンテンツにスキップ

SSH#

Lagoonでは、SSHを通じて実行中のコンテナに接続することができます。コンテナ自体にはSSHサーバーはインストールされていませんが、代わりにSSHを使ってLagoonに接続し、そこからKubernetes APIを通じてリモートシェル接続を作成します。

SSHアクセスの設定を確認する#

SSHキーの生成#

同じキーを複数のコンピューター間で共有するのではなく、各デバイスごとに別々のSSHキーを生成することをお勧めします。各システムでのSSHキーの生成方法については以下を参照してください。

OSX(Mac)#

Mac

Linux(Ubuntu)#

Linux

Windows#

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接続#

接続#

接続は直接的で、次のパターンに従います:

SSH
ssh -p [PORT] -t [PROJECT-ENVIRONMENT-NAME]@[HOST]
  • PORT - リモートシェルのSSHエンドポイントポート(amazee.ioの場合:32222)。
  • HOST - リモートシェルのSSHエンドポイントホスト(amazee.ioの場合ssh.lagoon.amazeeio.cloud)。
  • PROJECT-ENVIRONMENT-NAME - 接続したい環境。これは通常PROJECTNAME-ENVIRONMENTのパターンで使用されます。

例えば:

SSH example
ssh -p 32222 -t drupal-example-main@ssh.lagoon.amazeeio.cloud

これにより、main環境のプロジェクトdrupal-exampleに接続します。

ポッド/サービス、コンテナ定義#

デフォルトでは、リモートシェルはタイプcliで定義されたコンテナに接続しようとします。他のポッド/サービスに接続したい場合は、以下のように定義できます:

SSH to another service
ssh -p [PORT] -t [PROJECT-ENVIRONMENT-NAME]@[HOST] service=[SERVICE-NAME]

あなたのポッド/サービスに複数のコンテナが含まれている場合、Lagoonはあなたを最初に定義されたコンテナに接続します。また、接続したい特定のコンテナを定義することもできます:

```bash title=" "コンテナ"を定義します。 ssh -p [ポート] -t [プロジェクト-環境名]@[ホスト] service=[サービス名] container=[コンテナ名]

例えば、nginxポッド内のphpコンテナに接続するには:

SSH to php container
ssh -p 32222 -t drupal-example-main@ssh.lagoon.amazeeio.cloud service=nginx container=php

ファイルのコピー#

一般的なケースで、ファイルをcliポッドにコピーすることは、通常のSSH互換ツールを使って達成できます。

scp#

Copy file with scp
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [ローカルパス] [プロジェクト名]-[環境名]@ssh.lagoon.amazeeio.cloud:[リモートパス]

rsync#

Copy files with rsync
rsync --rsh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 32222' [ローカルパス] [プロジェクト名]-[環境名]@ssh.lagoon.amazeeio.cloud:[リモートパス]

tar#

Bash
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [プロジェクト名]-[環境名]@ssh.lagoon.amazee.io tar -zcf - [リモートパス] | tar -zxf - -C /tmp/

非CLIポッド/サービスの指定#

まれなケースで、非CLIサービスを指定する必要がある場合は、指定することができます。 service=...および/またはcontainer=...引数はコピーコマンドにあります。

tarssh接続を通してパイプすることは最も単純な方法で、通常のtarフラグを用いてファイルやディレクトリーをコピーするために使用できます:

Bash
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を使用することもできます:

Bash
#!/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 to non-CLI pod
rsync --rsh="/path/to/rsh.sh service=cli" /tmp/foo [project_name]-[environment_name]@ssh.lagoon.amazeeio.cloud:/tmp/foo

このスクリプトは、container=...引数も処理するように調整することもできます。