FindInstance
FindInstance[eqns,vars] gives you only a trivial solution (A1 == A2 == ...== H2 == 0), which is not what one reallly wants. FindInstance[eqns, vars, n] helps in finding n solutions, e.g. for n == 2 yields two non-trivial solutions :
FindInstance[ A1 D1 + E1 H1 == 0 && A2 D1 + A1 D2 + E2 H1 + E1 H2 == 0 &&
C1 F1 - E1 G1 == 0 && C2 F2 - E2 G2 == 0 && A1 - B1 + C1 == 0 &&
A2 - B2 + C2 == 0 && A3 - B3 + C3 == 0,
{A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, E1, E2, F1, F2, G1, G2, H1, H2}, 2]
Of course there are infinitely many such instances of solutions, so they aren't too interesting as well.
What one really would like is a symbolic solution. Thus one should make use of Solve or Reduce.
Solve
Working with Solve you can find what and how many symbolic solutions there are adding this option MaxExtraConditions -> All :
sols = Solve[ A1 D1 + E1 H1 == 0 && A2 D1 + A1 D2 + E2 H1 + E1 H2 == 0 &&
C1 F1 - E1 G1 == 0 && C2 F2 - E2 G2 == 0 && A1 - B1 + C1 == 0 &&
A2 - B2 + C2 == 0 && A3 - B3 + C3 == 0,
{A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, E1, E2, F1, F2, G1, G2, H1, H2},
MaxExtraConditions -> All] // Quiet;
so you can check how many solutions there are :
Length @ sols
27
and select n-k solutions, for 1 <= k < n <= 27 : sols[[ k;;n ]], e.g. the first one
sols[[1]]
{B1 -> ConditionalExpression[A1 + C1, E1 != 0 && E2 != 0 && A1 D1 != 0],
B2 -> ConditionalExpression[A2 + C2, E1 != 0 && E2 != 0 && A1 D1 != 0],
C3 -> ConditionalExpression[-A3 + B3, E1 != 0 && E2 != 0 && A1 D1 != 0],
G1 -> ConditionalExpression[(C1 F1)/E1, E1 != 0 && E2 != 0 && A1 D1 != 0],
G2 -> ConditionalExpression[(C2 F2)/E2, E1 != 0 && E2 != 0 && A1 D1 != 0],
H1 -> ConditionalExpression[-((A1 D1)/E1), E1 != 0 && E2 != 0 && A1 D1 != 0],
H2 -> ConditionalExpression[-((A2 D1 + A1 D2 - (A1 D1 E2)/E1)/E1),
E1 != 0 && E2 != 0 && A1 D1 != 0]}
this means e.g. that B1 == A1 + C1 under conditions E1 != 0 && E2 != 0 && A1 D1 != 0.
One can observe that if we omit MaxExtraConditions or we add MaxExtraConditions -> Automatic then solutions will not be represented in terms of ConditionalExpressions and therefore some troubles can apear potentially.
Sometimes it will be handy to specify only a few variables. Then we can use also MaxExtraConditions in Solve, and specifying e.g. {A1, A2, A3, B1, B2, B3} we get only one symbolic solution :
Solve[ A1 D1 + E1 H1 == 0 && A2 D1 + A1 D2 + E2 H1 + E1 H2 == 0 && C1 F1 - E1 G1 ==0 &&
C2 F2 - E2 G2 == 0 && A1 - B1 + C1 == 0 && A2 - B2 + C2 == 0 && A3 - B3 + C3 == 0,
{A1, A2, A3, B1, B2, B3}, MaxExtraConditions -> Automatic] // Quiet
{{A1 -> ConditionalExpression[-((E1 H1)/D1), F2 == (E2 G2)/C2 && F1 == (E1 G1)/C1],
A2 -> ConditionalExpression[((D2 E1 H1)/D1 - E2 H1 - E1 H2)/D1,
F2 == (E2 G2)/C2 && F1 == (E1 G1)/C1],
B1 -> ConditionalExpression[C1 - (E1 H1)/D1, F2 == (E2 G2)/C2 && F1 == (E1 G1)/C1],
B2 -> ConditionalExpression[C2 + ((D2 E1 H1)/D1 - E2 H1 - E1 H2)/D1,
F2 == (E2 G2)/C2 && F1 == (E1 G1)/C1],
B3 -> ConditionalExpression[A3 + C3, F2 == (E2 G2)/C2 && F1 == (E1 G1)/C1]}}
Reduce
Reduce finds all solutions
r = Reduce[ A1 D1 + E1 H1 == 0 && A2 D1 + A1 D2 + E2 H1 + E1 H2 == 0 &&
C1 F1 - E1 G1 == 0 && C2 F2 - E2 G2 == 0 && A1 - B1 + C1 == 0 &&
A2 - B2 + C2 == 0 && A3 - B3 + C3 == 0,
{A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, E1, E2, F1, F2, G1, G2, H1, H2}];
being implicitly ConditionalExpression's. To select only one solution we just evaluate r[[n]] for 1<= n <= 25.
Warning
Comparing with sols, found by Solve the number of solutions may be slightly different
because certain ConditionalExpression's repeat some identical solutions under different conditions :
Length @ r
25