質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1279閲覧

SSHでログインしたサーバ先でgit cloneできない

poteto4401

総合スコア57

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/11/23 10:23

編集2018/11/23 14:00

PHPのDeployerを使用し、GithubからAWSのEC2サーバにソースをデプロイしようと思っているのですが、
サーバ上でのGitのcloneがうまくいかず、以下のようなエラーが出力され、デプロイに失敗します。

[xxx.xxx.xxx.xxx] > cd /var/www/html/hoge && (/usr/bin/git clone -b master --recursive -q git@github.com:myname/hoge.git /var/www/html/hoge/releases/1 2>&1) Permission denied (publickey). fatal: Could not read from remote repository.

サーバー上で直接GitCloneしたところ、問題なくできましたが、
ローカルからgithubへのsshを実行すると上記のエラーが出力されます。

<ローカルから実行した場合>

$ ssh -i ~/.ssh/id_rsa.pem user@xxx.xxx.xxx.xxx `ssh -T git@github.com` Permission denied (publickey).

<サーバーから実行した場合>

$ ssh -T git@github.com Hi myname! You've successfully authenticated, but GitHub does not provide shell access.

どこから調査すればよいのか検討がつかないので、ご教授いただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/11/23 12:08

サーバへのSSH接続がうまくいかない、ということでいいのかな?
poteto4401

2018/11/23 12:49

ローカルからサーバへのGitクローンがしたいです!説明不足ですみません…
y_waiwai

2018/11/23 13:11

サーバへのSSH接続はうまくいくんでしょうか
poteto4401

2018/11/23 13:50

はい、サーバへのSSH接続は成功しております。SSHでログイン後、ログイン先のサーバからgit cloneでgithubのリポジトリからソースをダウンロードも出来ています。ただ、ローカルからそれを実行、つまり、上記の<ローカルから実行した場合>のようなことが出来ないです。
guest

回答1

0

ベストアンサー

コマンドラインが質問欄のとおりで間違いなければ、サーバに接属する前にローカルでGitHubに接続してPermission denied (publickey).になっているだけのようです。

sh

1# 元のコマンドライン 2$ ssh -i ~/.ssh/id_rsa.pem user@xxx.xxx.xxx.xxx `ssh -T git@github.com` 3 4# 多分やりたかったコマンドライン 5$ ssh -i ~/.ssh/id_rsa.pem user@xxx.xxx.xxx.xxx 'ssh -T git@github.com'

【追記】

git、sshの使い方以前に、bashの記述を勘違いしています。元のコマンドラインは、gitコマンドをローカルで実行した結果の文字列をサーバで実行しようとするものになっています。
質問にあるコマンドでやりたいことが、gitコマンドをサーバで実行することであるならば、シングルまたはダブルクォーテーションでコマンドを囲むのが正解です。

元のコマンドラインを別の書き方にすると以下のようになります。

sh

1# 元のコマンドライン(別の書き方) 2$ ssh -i ~/.ssh/id_rsa.pem user@xxx.xxx.xxx.xxx "$(ssh -T git@github.com)"

投稿2018/11/24 04:34

編集2018/11/24 07:35
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poteto4401

2018/11/24 04:57

いえ、やりたいこととしては、あくまでDeployerが実行しているこのコマンドです。 ``` cd /var/www/html/hoge && (/usr/bin/git clone -b master --recursive -q git@github.com:myname/hoge.git /var/www/html/hoge/releases/1 2>&1) ``` 公開鍵/秘密鍵の設定が正しくできているかを確認するために、サーバへログインし、 `$ ssh -T git@github.com` を実行した次第です。 Deployerの挙動として、サーバへSSHでログインし、冒頭のコマンドを実行しているようなのですが、 `Permission denied (publickey).` が出力され終了していまいます。 一通り調べたところDeployerのコードには問題はなさそうで、ローカルからDeployerを実行し、SSHで冒頭のコマンドを実行した際に、何らかの不具合が起きているのかと予想しています。 言葉足らずでもうしわけありません。
tkmtmkt

2018/11/24 07:18

サーバにログインして実行しているというのが勘違いです。ローカルで実行しているからPermission denied (publickey).になっています。 ローカルの共通鍵をGitHubに登録すれば、何を勘違いしているのか理解できるかもしれません。 今実行しているコマンドはローカルで実行した結果をサーバで実行するという動きになりますので、「-bash: Hi myname! 〜: command not found」のような結果になると思います。
poteto4401

2018/11/24 07:47

御親切にありがとうございます!! ローカルで実行していたということなんですね! ご説明いただいたコマンドを入力するとPermission denied (publickey).となりました。 これは、ローカルの公開鍵をGithubに設定していないからだと思います。 諸事情で今すぐにGithubにローカルの鍵を登録できないので、後ほど登録して確認したいと思います。
tkmtmkt

2018/11/24 08:04

確認の例としてローカルの共通鍵登録してというのを上げましたが、どうなっているのか分かったのであれば別に登録すは必要はないと思います。どうしても試してみたいのであれば、サーバ上で以下のコマンド実行して見るのでも良いと思います。 ssh localhost `ssh -T git@github.com`
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問